Saya sedang mengembangkan mesin game 2D kecil. Karakter memiliki metode cat yang saat ini melakukan hal berikut:
- Hitung posisi karakter baru sesuai kecepatannya, dll.
- Perbarui sel jaringan tabrakan **
- Gambar karakter di posisi baru
** Saya telah membuat collision grid untuk mengurangi jumlah pemeriksaan persimpangan
Sekarang algoritma dasar yang saya pikirkan untuk mendeteksi tabrakan adalah:
For Each Character
Check intersection with characters in surrounding 8 cells
Saya hanya bisa menempatkan kode ini dalam metode cat. Tapi inilah masalah yang saya antisipasi.
Misalkan dua karakter A dan B terletak di sel yang berdekatan di grid tabrakan. Sekarang sesuai dengan algoritma di atas dalam iterasi karakter A ia akan mendeteksi bahwa ia telah bertabrakan dengan B. Dalam iterasi untuk karakter B itu akan mendeteksi bahwa ia telah bertabrakan dengan A.
Tapi saya punya ide bahwa ketika A mendeteksi bahwa ia bertabrakan dengan B, itu harus memberitahu B bahwa ia bertabrakan dengan A. Ini akan menghemat banyak perbandingan ketika ada lebih dari 2 aktor bertabrakan. Tapi saya tidak yakin bagaimana menangani ini. Saya pikir alih-alih setiap karakter memeriksa tabrakannya, saya harus memeriksa tabrakan di dalam loop game.
Apakah pendekatan ini benar? Bagaimana Anda menangani masalah seperti ini? Saya memikirkan hal tabrakan sendiri. Apakah ada alternatif selain logika tabrakan?