Estoy escribiendo un clon de ruptura (mi primer juego) y estoy totalmente atascado en cuanto a cómo averiguar qué lado del ladrillo fue golpeado.
Tengo un método de detección de colisión que se ve así:
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;
Esto funciona totalmente bien, pero necesito saber el lado de la colisión y la ubicación relativa al centro para poder responder adecuadamente.
He pasado los últimos días husmeando pero estoy perdido.
fuente
¡Podrías usar Vector Math para descubrir los ángulos entre ellos!
Aquí hay una respuesta corta:
El revestimiento de ladrillo es un vector complicado, es el "punto de inicio" del cálculo del ángulo. y si desea que el vector apunte hacia arriba, hágalo (0, 1), apunte a la izquierda (-1, 0), a la derecha (1, 0), apunte hacia abajo (0, -1). Suponiendo que está en el eje OpenGL, donde arriba y derecha son positivas.
Si no sabe, aquí están las definiciones de cada función utilizada:
( https://en.wikipedia.org/wiki/Dot_product )
Referencia: http://blog.wolfire.com/2009/07/linear-algebra-for-game-developers-part-2/
fuente