Bertahun-tahun yang lalu saya mengkodekan beberapa AI untuk game pseudo-3d anggaran. Ada satu perhitungan yang saya tidak pernah benar-benar menemukan cara terbaik untuk melakukannya, dan itu menghitung di mana musuh akan berakhir jika berhenti sekarang. Sebagai contoh:
- Musuh saat ini di X = 540.0.
- Musuh bergerak dengan kecepatan 10 piksel per frame.
- Ketika musuh ingin berhenti, kecepatannya akan turun 1 pixel per frame hingga mencapai nol.
Apakah ada formula sederhana yang akan membuat saya berada di posisi di mana musuh berakhir ketika dia sepenuhnya berhenti? Saya akhirnya menghitung ulang dan meng-hardcoding offset yang bekerja untuk kebutuhan saya tetapi harus dihitung secara terpisah untuk musuh dengan kecepatan yang berbeda.
sumber
Saya memiliki masalah yang sama persis ketika mengerjakan game saya, dan butuh selamanya untuk mendapatkan matematika yang benar (bleh). Jadi begini:
Ditulis ulang ke dalam matematika reguler:
Di mana akselerasi dalam kasus Anda adalah 1, dan linearVelocity adalah 10:
EDIT
Hasil dan penjelasan Jimmy keduanya benar. Formula saya mengharuskan Anda juga menambahkan setengah dari kecepatan.
atau
sumber
Perhitungan tentang mengubah kecepatan adalah seluruh titik kalkulus. Saya belum melakukannya dalam beberapa saat jadi saya tidak ingat dari atas kepala saya, tapi saya pikir situasi Anda hanya mengambil integral dari -1 (mis. Deselerasi).
sumber
Bukankah ini gerakan percepatan yang konstan?
Di mana:
X: Posisi terakhir
Xi: Posisi awal
V: Kecepatan
t: Waktu
a: Akselerasi
Satu-satunya bagian yang sulit di sini adalah bagaimana menentukan "t", karena kita melambat dengan akselerasi -1, maka kita dapat menghitung t = V / a, lalu t adalah 10.
jadi,
Xi: 540
V: 10
t: 10
a: -1
Kenakan semuanya:
Rumus berasal dari dengan mengambil integrasi percepatan: Periksa di sini
sumber