Encontrar um ângulo entre duas coordenadas
Enviado: 30 Jun 2019, 11:35
Descrição
Muitas vezes queremos encontrar um ângulo entre duas coordenadas para fazer coisas mais complexas como checar colisões, apontar objetos ou até como no meu caso encontrar um ângulo de fora de uma parede para pôr o jogador nele como um "cover"
Essa função vai encontrar um ângulo de 360 graus entre duas coordenadas (x,y) e (x,y), porque apenas x,y e não z? porque a altura(z) não muda literalmente nada no ângulo, logo é um gasto desnecessário de processamento.
Função
Muitas vezes queremos encontrar um ângulo entre duas coordenadas para fazer coisas mais complexas como checar colisões, apontar objetos ou até como no meu caso encontrar um ângulo de fora de uma parede para pôr o jogador nele como um "cover"
Essa função vai encontrar um ângulo de 360 graus entre duas coordenadas (x,y) e (x,y), porque apenas x,y e não z? porque a altura(z) não muda literalmente nada no ângulo, logo é um gasto desnecessário de processamento.
Função
Código: Selecionar tudo
{
//CLEO_CALL FindAngle 0 (x,y) (x,y) (angle) --LightVelox
FindAngle:
LVAR_FLOAT cx cy ex ey
LVAR_FLOAT dx dy theta m_pi q1 q2 r
m_pi = 3.1415926
dy = ey
dy -= cy
dx = ex
dx -= cx
//Passa para magnitude
q1 = dx
q1 *=dx
q2 = dy
q2 *=dy
q1 +=q2
SQRT q1 r
dx /= r
dy /= r
GET_HEADING_FROM_VECTOR_2D dx dy theta
CLEO_RETURN 0 theta
}