Saya sedang menulis klon breakout (game pertama saya) dan saya benar-benar terjebak bagaimana saya mengetahui sisi mana dari batu bata itu dipukul.
Saya memiliki metode pendeteksian benturan yang terlihat seperti ini:
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;
Ini berfungsi dengan sangat baik, tetapi saya perlu tahu sisi tabrakan, dan lokasi relatif terhadap pusat untuk merespons dengan benar.
Saya telah menghabiskan beberapa hari terakhir mengintip tapi tersesat.
sumber
Anda bisa menggunakan Vector Math untuk menemukan sudut di antara mereka!
Inilah jawaban singkatnya:
Menghadapi Brick adalah vektor yang rumit, itu adalah "titik awal" dari perhitungan sudut. dan jika Anda ingin vektor mengarah ke atas, buatlah (0, 1), titik kiri (-1, 0), kanan (1, 0), arahkan ke bawah (0, -1). Dengan asumsi Anda berada di sumbu OpenGL, di mana atas dan kanan positif.
Jika Anda tidak tahu, inilah definisi dari setiap fungsi yang digunakan:
( https://en.wikipedia.org/wiki/Dot_product )
Referensi: http://blog.wolfire.com/2009/07/linear-algebra-for-game-developers-part-2/
sumber