Pendekatan standar adalah (pilih satu):
- Tingkatkan lebar batas Anda DAN / ATAU kurangi kecepatan maksimum peluru Anda sehingga peluru itu tidak akan pernah bisa menembus dinding dalam satu pembaruan (minta sedikit Pythagoras untuk mengetahui jarak maxium / lebar batas minimum);
- Lakukan deteksi tabrakan terus menerus (CCD), biasanya dengan raycasting untuk mendeteksi tabrakan dengan permukaan linear (2) atau planar (3D) di depan objek bergerak. Ini lebih mahal, tetapi merupakan solusi yang lebih menyeluruh. Raycasting terhadap garis 2D cukup mendasar, tetapi Anda perlu mendefinisikan semua batas Anda sebagai poligon lurus dalam kasus ini.
Untuk itu, Anda bisa memodelkan peluru Anda sebagai sinar - jika itu cocok dengan tampilan & nuansa permainan Anda, seperti di left4kdead . Dengan begitu Anda tidak perlu memperkirakan peluru sebagai sinar, karena mereka sudah sinar. Dari sudut pandang penampilan, ini bisa terlihat baik jika Anda menggambar garis dengan titik yang lebih terang di ujung peluru, atau hanya menggambar garis sebagai gradien dari cahaya (ujung peluru) ke gelap (ujung ekor), memberikan penampilan gerakan.
Saya setuju bahwa dalam sebagian besar keadaan, menggunakan grafik untuk pendeteksian tabrakan agak salah arah, namun pendeteksian tabrakan pixel-sempurna persis seperti itu, dan merupakan teknik yang diterima. Saya kira itu semua tergantung pada apa yang ingin Anda capai, dan seberapa cepat. Jika Anda tidak membutuhkan permainan yang sangat cepat dengan banyak aksi + aksi, lakukanlah. Selain itu, lebih baik menggunakan salah satu pendekatan yang saya uraikan di atas.