Saya memiliki permainan Breakout di mana, pada titik tertentu, saya mendeteksi tabrakan antara bola dan dayung dengan sesuatu seperti ini:
// Ball class
rectangle.Intersects(paddle.Rectangle);
Apakah ada cara saya bisa mendapatkan koordinat yang tepat dari tabrakan, atau rincian tentang hal itu, dengan arus XNA API
?
Saya berpikir untuk melakukan beberapa perhitungan dasar, seperti membandingkan koordinat yang tepat dari setiap objek pada saat tabrakan. Akan terlihat seperti ini:
// Ball class
if((rectangle.X - paddle.Rectangle.X) < (paddle.Rectangle.Width / 2))
// Collision happened on the left side
else
// Collision happened on the right side
Tapi saya tidak yakin ini cara yang benar untuk melakukannya.
Apakah kalian punya tips tentang mungkin mesin yang mungkin harus saya gunakan untuk mencapai itu? Atau bahkan praktik pengkodean yang baik menggunakan metode ini?
sumber
get the rectangle where the two overlap
fungsi ini tersedia diXNA API
atau saya harus mengunduh beberapa hal tambahan, sepertiPlatformer Starter Kit
?Rectangle Rectangle.Intersects(...)
.rectangle.X
ataurectangle.Y
atau apa pun yang ingin Anda akses.Pembaruan: Jika Anda menggunakan MonoGame, maka pada 3.0 beta,
Rectangle Rectangle.Intersect(rectangle, rectangle)
tidak ada. Anda dapat menggunakan kode di bawah ini dari kit XNA Platformer sebagai gantinya.Anda dapat mengunduh XNA Platformer Starter Kit ( porting ke Windows 7 ). Ini dikirimkan dengan metode ekstensi helper yang mengembalikan persegi panjang yang menggambarkan persimpangan dua persegi panjang:
sumber
ssb
, tetapi terima kasih banyak untuk ini. Saya pasti akan masuk ke port ini! Terimakasih banyak!