Estou escrevendo um clone de fuga (meu primeiro jogo) e estou totalmente empolgado com a maneira de descobrir qual lado do tijolo foi atingido.
Eu tenho um método de detecção de colisão que se parece com isso:
DetectCollision(Object a, Object b)
x = distance(a.x, b.x);
y = distance(a.y, b.y);
if (x is smaller than the combined width & y is smaller is than combined height {
return true;
}
return false;
Isso funciona totalmente bem, mas preciso saber o lado da colisão e a localização em relação ao centro para responder adequadamente.
Passei os últimos dias bisbilhotando, mas estou perdido.
fonte
Você pode usar o Vector Math para descobrir os ângulos entre eles!
Aqui está uma resposta curta:
O revestimento do tijolo é um vetor complicado, é o "ponto inicial" do cálculo do ângulo. e se você quiser que o vetor aponte para cima, faça-o (0, 1), aponte para a esquerda (-1, 0), para a direita (1, 0), aponte para baixo (0, -1). Supondo que você esteja no eixo OpenGL, onde a direita e a direita são positivas.
Se você não sabe, aqui estão as definições de cada função usada:
( https://en.wikipedia.org/wiki/Dot_product )
Referência: http://blog.wolfire.com/2009/07/linear-algebra-for-game-developers-part-2/
fonte