Pular para o conteúdo
Baixar

Desenho

Por padrão, cada instância desenha o próprio sprite. Para desenhar outras coisas, sobrescreva onRender (no mundo, com câmera) ou onRenderGui (por cima de tudo, em coordenadas da tela) e use as funções abaixo dentro desses eventos.

Função O que faz Exemplo
void drawSelf() Desenha o próprio sprite no quadro atual, com escala, ângulo e posição da instância. drawSelf();
void drawSprite(std::string_view spriteName, float frameIndex, float atX, float atY, float sx = 1, float sy = 1, float rotation = 0, float alpha = 1) Desenha qualquer sprite, em qualquer posição. alpha vai de 0 (invisível) a 1. drawSprite("coracao", 0, 4, 24);
void drawRect(float rx, float ry, float rw, float rh, Color color, bool filled = true) Desenha um retângulo cheio ou só o contorno. drawRect(4, 30, 50, 4, colors::red);
void drawLine(float x1, float y1, float x2, float y2, Color color) Desenha uma linha. drawLine(x, y, mouseX(), mouseY(), colors::white);
void drawText(std::string_view text, float tx, float ty, Color color = colors::white) Escreve um texto, com acentos. Cada letra tem 8 pixels de largura. drawText("Pausa", 140, 80);
void drawText(std::string_view text, float tx, float ty, Color color, int scale) O mesmo, ampliado: scale 2 dá letras de 16 pixels. drawText("Pausa", 120, 80, colors::white, 2);
void drawText(std::string_view text, float tx, float ty, Color color, std::string_view font, int size) Escreve com uma fonte do projeto (um .ttf importado em Recursos), com letras de size pixels. drawText("Fim", 120, 80, colors::white, "Titulos", 24);

Para menus, placares e telas, veja a Interface: os textos são postos no editor e o código só muda o que eles mostram.

Color{r, g, b, a} com valores de 0 a 255 (a é a opacidade). Cores prontas em colors:::

Nome Valor
colors::white {255, 255, 255, 255}
colors::black {0, 0, 0, 255}
colors::red {230, 60, 60, 255}
colors::green {60, 220, 90, 255}
colors::yellow {255, 220, 60, 255}
colors::magenta {255, 0, 255, 255}
  • Quem decide a ordem é a camada: a de cima da lista é desenhada na frente. Cada camada tem um depth, e o maior fica por trás.
  • A instância nasce com o depth da camada dela. No código, setLayer("Frente") a muda de camada; depth = 5; também funciona.
  • Tudo que é desenhado no onRenderGui fica por cima de tudo do onRender.
  • Uma instância com visible = false não desenha nada.

Veja Texto na tela e Animar um sprite.