Saya sedang mengembangkan game Android 2D dan saya membuat algoritma yang bertujuan untuk proyektil AI untuk mengenai musuh baik mengikuti jalan, atau bergerak bebas. Saat ini ia hanya menghitung di mana target akan berada setelah jarak dan menembakkan proyektil untuk mencapainya pada jarak itu. Tentu saja ini berarti memvariasikan kecepatan proyektil untuk memenuhi target.
Adakah yang punya tips untuk algoritma ish-sederhana (optimal-ish) untuk menghitung kapan proyektil perlu ditembakkan dan di mana ia perlu membidik jika hanya dapat bergerak dengan kecepatan konstan? Katakanlah proyektil berjalan dua kali kecepatan target?
Satu-satunya cara saya bisa memikirkan melibatkan pencarian dan tampaknya cukup besar.
Jawaban:
Dalam permainan menara pertahanan yang saya buat, saya menggunakan persamaan kuadrat untuk memprediksi persimpangan dan dengan demikian titik tujuan. Cuplikan kode bertujuan berikut ini mengasumsikan bahwa musuh bepergian dengan kecepatan dan arah yang konstan. Ini juga mengasumsikan proyektil akan bepergian dengan kecepatan konstan yang diketahui (bisa berupa kecepatan apa pun tetapi harus diketahui oleh algoritme).
Karena itu juga menentukan waktu tumbukan, saya hanya menunggu sampai waktu yang disisipkan untuk memanggil tumbukan grafik pada posisi target pada waktu itu ... tidak perlu deteksi tabrakan untuk menentukan hit.
sumber
a
itu 0? Ini akan menghasilkan pembagian dengan pengecualian nol, tetapi apa artinya ini dalam hal variabel t? haruskah itu dianggap 'angka yang sangat besar' atau apa kasus terbaiknya?AI, lokasi target selama proyektil ditembakkan, dan lokasi akhirnya target pada titik kematian membentuk segitiga. Berikut adalah apa yang harus Anda ketahui:
Anda memiliki tiga bagian segitiga, kotak SSA, jadi selesaikan seperti ini
Sudut A harus memungkinkan Anda untuk menentukan sudut di mana proyektil harus diluncurkan.
sumber