Saya memiliki beberapa objek dalam permainan saya yang "dilempar". Saat ini saya mencoba menerapkan ini dengan meminta benda-benda ini mengikuti kurva parabola. Saya tahu titik awal, titik akhir, titik dan kecepatan objek.
- Bagaimana saya bisa menentukan pada waktu atau kerangka tertentu apa koordinat x & y itu?
- Apakah kurva parabola bahkan merupakan kurva yang tepat untuk digunakan?
physics
projectile-physics
Ben Williams
sumber
sumber
Jawaban:
Apa yang Anda cari plot parametrik dari fungsi parabola. Paling mudah untuk membuat fungsi parametrik menggunakan rentang p ∈ [0,1].
Bentuk kanonik untuk parabola parametrik adalah
Menggunakan rumus ini dan beberapa aljabar dasar untuk fungsi morphing dan saya dapat
Jadi untuk mendapatkan fungsi-fungsi ini akan menghasilkan angka yang Anda cari.
sumber
f_x
menggunakanf_y
akselerasi sa
sebagai setengah kecepatannya? Anda harus membuatnyax(t) = x0 + vx0*t
dany(t) = y0 + vy0*t + .5*ay*t*t
a
dant
hanya nama yang dipilih dengan buruk. Anda harus memperhatikan bahwa tidak ada komponen kecepatan dalam formula. Gerak euler dan parabola parametrik bukan hal yang sama, tetapi mereka sangat mirip karena penerbangan balistik melacak jalur parabola.Menemukan persamaan kurva yang Anda inginkan agar objek Anda bergerak adalah salah satu cara untuk mencapai apa yang Anda inginkan, tetapi mungkin bukan yang terbaik.
Sebagai gantinya, seseorang biasanya melacak properti lokal dari suatu objek (kecepatan, akselerasi) dan kemudian menggunakan nilai-nilai ini untuk memperbarui posisi objek setiap frame.
Karena Anda menyebutkan parabola saya berasumsi bahwa Anda melempar bola dalam 2D dan Anda ingin jatuh di sepanjang sumbu y. Jadi, objek Anda memiliki akselerasi konstan dalam arah-y (sebut saja
g
) dan tidak ada akselerasi dalam arah-x. Ketika benda itu dilemparkan diberi kecepatan, mari kita sebut ituvx
danvy
.Lalu, setiap frame aplikasi Anda, Anda akan menambahkan akselerasi objek ke kecepatannya, dan kemudian menambahkan kecepatannya ke posisinya. Sesuatu seperti:
Lakukan ini setiap frame dan bola Anda akan mulai bergerak. Ada banyak lagi yang perlu diketahui tentang ini, tapi ini awal.
sumber
Jawaban Brandon cukup bagus, tetapi jika Anda mencari sesuatu yang lebih maju, Anda mungkin ingin memeriksa interpolasi linier: http://en.wikipedia.org/wiki/Linear_interpolation
Juga, jika kurva Anda adalah suatu fungsi, Anda bisa mengetahui koordinat x dan y (dan z) pada waktu tertentu. Ini mungkin membantu juga: http://www.ucl.ac.uk/Mathematics/geomath/level2/fvec/fv8.html#l1
sumber
Dalam permainan konsol, kita sering menggunakan Interpolasi Bicubic untuk menyelesaikan masalah ini. Pertama, sampel posisi objek secara berkala t. Untuk proyektil, tambahkan percepatan gravitasi [0, dy / dt / dt] ke kecepatannya [dx / dt, dy / dt] pada setiap interval. Rekam semua koordinat [x, y] yang dihasilkan dalam array.
Kemudian, untuk merekonstruksi posisi objek [x, y] untuk t yang diberikan, baca empat sampel yang paling dekat dengan t dari buffer yang Anda rekam: [t-1, t, t + 1, t + 2]. Blender keempat sampel sesuai dengan koefisien dalam artikel wikipedia tertaut untuk mendapatkan gerakan halus di ruang angkasa.
Ini tidak seakurat secara fisik seperti melakukan perhitungan fisika saat bepergian tetapi memungkinkan lisensi artistik dan skala ekonomis untuk membantu simulasi Anda.
sumber