Pular para o conteúdo
Baixar

Matemática e sorteio

Ângulos são em graus: 0 = direita, 90 = cima, 180 = esquerda, 270 = baixo.

Função O que faz Exemplo
float angleTo(float targetX, float targetY) const Ângulo desta instância até um ponto. setDirection(angleTo(mouseX(), mouseY()));
float angleTo(const Entity& other) const Ângulo até outra instância. angleTo(*player)
float distanceTo(float targetX, float targetY) const Distância em pixels até um ponto. if (distanceTo(160, 90) < 8) ...
float distanceTo(const Entity& other) const Distância até outra instância. if (distanceTo(*player) < 40) ...
Função O que faz Exemplo
float lerp(float a, float b, float t) Mistura de a para b: t = 0 dá a, t = 1 dá b. x = lerp(x, alvo, 0.1f);
float approach(float current, float target, float step) Anda de current até target por no máximo step, sem passar. hspeed = approach(hspeed, 0, 0.2f);
int sign(float v) -1, 0 ou 1, conforme o sinal. if (hspeed != 0) scaleX = sign(hspeed);
float wrap(float v, float min, float max) Dá a volta dentro do intervalo. wrap(370, 0, 360) = 10. x = wrap(x, 0, roomWidth());

Um vetor 2D com x e y. O y cresce para baixo, como na tela.

Membro O que faz
Vec2{x, y} Cria um vetor.
+, -, *, / (e +=, -=, *=, /=) Contas com vetores e números.
float length() const Comprimento do vetor.
Vec2 normalized() const O mesmo vetor com comprimento 1.
static Vec2 fromAngle(float distance, float degrees) Vetor com o comprimento e o ângulo dados.
const Vec2 v = Vec2::fromAngle(4.0f, 45); // 4 pixels na diagonal para cima e à direita
hspeed = v.x;
vspeed = v.y;
Função O que faz Exemplo
float random(float a, float b) Número com vírgula de a até quase b. vspeed = random(0.8f, 1.6f);
int randomInt(int a, int b) Número inteiro de a a b, incluindo os dois. int lado = randomInt(0, 3);
bool chance(float p) true com probabilidade p (0 = nunca, 1 = sempre). if (chance(0.25f)) ...
pick(a, b, ...) Sorteia um dos valores. Tipos misturados viram o tipo comum. pick(1, 5, 9)
void randomSeed(unsigned seed) Fixa a semente: a mesma semente repete os mesmos sorteios. randomSeed(42);

Veja Sorteio para exemplos.