Saya membuat penembak pengendali sisi 2d, dan saya mengalami sedikit masalah dengan deteksi tabrakan untuk peluru. Segala sesuatu termasuk peluru adalah objek dengan poligon mereka sendiri / metode pembaruan.
Masalahnya adalah bahwa peluru melaju dengan cepat, dan pada 60 frame per detik (apa permainan berjalan) peluru akan sering melewati dinding - karena bergerak lebih dari lebar dinding selama dalam interval pembaruan - dan terus dengan senang karena poligon tidak akan pernah tumpang tindih.
Apa yang bisa saya lakukan? Satu-satunya hal yang dapat saya lakukan adalah menggambar garis dari posisi lama ke posisi baru dan melakukan deteksi tabrakan, tetapi gambar garis untuk deteksi tabrakan direkomendasikan oleh dokumentasi slick2d. Bagaimana saya bisa memecahkan masalah ini?
Jawaban:
Pendekatan standar adalah (pilih satu):
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.
sumber
Jika Anda ingin peluru Anda berperilaku seperti benda fisik yang realistis (mis. Peluru Anda lebih seperti panah atau batu dari ketapel daripada tembakan senjata), maka Anda juga dapat mencoba meningkatkan frekuensi pembaruan fisika Anda.
Jadi, sementara gim Anda dapat berjalan dengan 60 frame per detik, simulasi fisik Anda dapat berjalan pada 120 pembaruan per detik (di sini ada di mana-mana memperbaiki artikel cap waktu Anda yang menjelaskan pengaturan fisika yang baik yang dapat berjalan pada kecepatan yang berbeda dari render-loop).
Tentu saja, meningkatkan interval pembaruan pada mesin fisika akan menambah beban pada CPU. Jadi pendekatan ini hanya masuk akal jika proyektil Anda tidak bergerak sangat cepat (yang saya asumsikan karena Anda dapat mengatakan bahwa proyektil Anda bergerak melengkung).
sumber