Saya memiliki rudal yang mengejar perilaku untuk melacak (dan mencoba dan memengaruhi) targetnya (diam).
Ini berfungsi dengan baik selama Anda tidak memberondong ketika Anda meluncurkan rudal. Jika Anda memberondong, rudal cenderung untuk mengorbit targetnya.
Saya memperbaikinya dengan mempercepat tangensial ke target terlebih dahulu , membunuh komponen tangensial dari kecepatan terlebih dahulu, kemudian beelining untuk target.
Jadi saya mempercepat -vT sampai vT hampir 0. Lalu mempercepat ke arah vN.
Sementara itu berhasil, saya mencari solusi yang lebih elegan di mana rudal dapat mempengaruhi target tanpa secara eksplisit membunuh komponen tangensial terlebih dahulu.
steering-behaviors
orbit
bobobobo
sumber
sumber
Jawaban:
Sepertinya masalahnya adalah bahwa rudal itu hanya menunjuk dirinya sendiri pada target tanpa memperhatikan kecepatan saat itu. Tetapkan rudal Anda sudut maksimum di mana dorongan dapat menyimpang dari garis gerak.
Pada setiap iterasi panduan, Anda menghitung kecepatannya tegak lurus terhadap target. Cari tahu berapa banyak itu harus memberi tip pada mesinnya untuk menghilangkan kecepatan komponen ini dan kemudian klip ini secara maksimal sehingga ia dapat memberi tip pada mesinnya.
Selama bagian pertama dari penerbangan itu akan bergerak agak ke kanan garis lurus pada gambar # 2 tetapi ketika terbang mesin akan nol komponen ini dan itu akan berakhir langsung menuju target.
Perhatikan bahwa dalam skenario ini hanya akan ada satu frame di mana mesin memiliki defleksi apa pun selain nol atau maks. Jika Anda melacak target bergerak Anda bisa mendapatkan defleksi yang lebih rendah pada setiap siklus saat target bergerak.
sumber
Ini mungkin bukan solusi elegan yang Anda cari, tetapi saya telah menemukan bahwa jika saya memperlambat rudal, jika itu akan meleset, ketika mendekati target, ia secara efektif melacak dan berbelok lebih cepat dan dapat mengenai target. Anda dapat meningkatkan kecepatan belokan rudal saat semakin dekat, daripada mengurangi kecepatan, tetapi ini mungkin memberi pemain 'wow, saya yakin itu akan melewatkan kejutan buruk.
Ini mungkin tidak terlihat begitu hebat, tapi itu tentu saja menghentikan misil dari mengorbit, dan dari lingkaran musuh - menembaki rudal sampai bahan bakar habis.
Berikut ini adalah demo yang saya kumpulkan dari implementasi saya (misil ketiga atau keempat menunjukkan ini, dan sekali lagi pukul 1:05): http://www.youtube.com/watch?v=9uiGMC_nH2w
Anda juga dapat meningkatkan akurasi rudal saat mendekati target juga (karena memiliki tanda tangan yang lebih dekat untuk dikunci). Ini ditampilkan dalam video juga sekitar satu menit. Lingkaran merah menunjukkan target sebenarnya dari rudal. Ini memberinya jalur penerbangan kacau ketika dalam jarak jauh, dan kemudian meluruskan semakin dekat.
Seperti yang saya katakan, itu mungkin bukan jawaban yang Anda cari, tapi saya harap itu membantu jika hanya sedikit.
sumber
Intuisi
Ini salah satu caranya: Ayo putar diagram Anda.
Sekarang roket itu adalah bola meriam !
Fisika
Ini memiliki akselerasi tetap "ke bawah" yaitu tegak lurus terhadap vektor dari lokasi penembakan ke target. Saya menggambar di atas sebagai garis hijau putus-putus. Sebut saja cakrawala referensi . (Perhatikan bahwa horizon referensi ini konstan! Roket ditembakkan dari posisi tetap dengan posisi tetap sebagai target.)
Kita tahu (dari wikipedia ) untuk bola meriam tanpa hambatan udara
d = v^2 * sin(2 * theta) / g
, di manad
adalah jarak horizontal yang ditempuh (jarak antara lokasi tembak dan target)v
adalah kecepatan proyektil itu ditembakkantheta
adalah sudut untuk cakrawala proyektil ditembakkan ( sudut vektor arah api dari cakrawala referensi )Mengatur ulang persamaan untuk
g
memberig = v^2 * sin(2 * theta) / d
.Konstanta dalam persamaan bola meriam
g
,, adalah akselerasi karena gravitasi . Kita bisa menganggapnya percepatan karena dorongan roket . Itu baik-baik saja - itu masih akselerasi konstan dalam arah yang konstan .Sekarang apa?
Jalankan persamaan itu
g
ketika Anda menembakkan roket. Ini akan memberi tahu Anda berapa banyak untuk mempercepat roket secara tegak lurus terhadap cakrawala referensi, untuk mencapai target. Karena arah akselerasi itu konstan, orbit tidak akan terbentuk.Ledakan.
sumber