Fisika kendaraan dengan skid

13

Bagaimana saya bisa menciptakan fisika kendaraan untuk mobil yang dapat kehilangan daya tarik? Saya ingin kelihatannya pengemudi memiliki kaki yang rata, jadi ketika Anda menekan gas, mobil-mobil mereka menggerakkan (belakang) roda traksi longgar, dan membuatnya agak sulit dikendalikan. Saya juga ingin bisa membuat donat dan "melayang" di sudut-sudut.

Saya juga perlu tahu berapa banyak "selip" yang terjadi, sehingga saya dapat menambahkan jumlah asap dan ban yang proporsional.

Asumsikan permainan mobil gaya 2d, top-down.

Terima kasih

Adam Harte
sumber

Jawaban:

10

Ini adalah versi yang sangat sederhana tetapi akan baik-baik saja untuk sebagian besar game jenis arcade. Anda membutuhkan properti berikut:

positionX, positionY - where the car is
velocityX, velocityY - speed on each axis
drag - how fast the car slows down
angle - the rotation of the car, in radians
angularVelocity - speed the car is spinning, in radians
angularDrag - how fast the car stops spinning
power - how fast car can accelerate
turnSpeed - how fast to turn

setiap bingkai:

positionX += velocityX
positionY += velocityY
velocityX *= drag
velocityY *= drag
angle += angularVelocity
angularVelocity *= angularDrag

untuk mempercepat

velocityX += sin(angle) * power;
velocityY += cos(angle) * power;

untuk mengarahkan kiri

angularVelocity -= turnSpeed;

untuk mengarahkan kanan

angularVelocity += turnSpeed;

Untuk mendapatkan drift yang baik, atur seret dan angularDrag ke sangat dekat dengan 1, misalnya 0,9

Iain
sumber
Jadi kontrolnya adalah tenaga (throttle) dan kecepatan sudut (kemudi)? Atau apakah saya kehilangan beberapa transformasi?
drxzcl
tidak hanya itu - lupa menjelaskan cara mengarahkan. Telah diperbarui dengan variabel turnSpeed ​​baru.
Iain
2

Saya sedang membaca makalah hari ini yang mensimulasikan beberapa dinamika kendaraan selama tabrakan dan putaran:

Jing Zhou; Jianbo Lu; Huei Peng, "Dinamika Kendaraan Menanggapi Manuver Teknik Presisi Imobilisasi", Prosiding Sistem Dinamik ASME 2008 dan Konferensi Kontrol

Ini berisi model fisika yang mewakili momen roll-over dan kehilangan traksi ban belakang selama menguap yang disebabkan oleh gaya tabrakan yang disengaja. Tampaknya menarik bagi pemrogram game yang tertarik dengan dinamika kendaraan selama tabrakan.

Heath Hunnicutt
sumber
Cukup belajar, tetapi sayangnya tidak cocok untuk masalah yang dihadapi. Makalah ini adalah analisis 3D, dengan gulungan kendaraan dan semuanya. Pertanyaan terkait dengan game tampilan atas 2D. Jadi fisika 2D, bukan 3D.
Bram
1

Saya biasanya tidak merekomendasikan Bourg's Physics for Game Programmer , tetapi dia berbicara sedikit tentang ini di Bab 10 (sekitar halaman 171), dan mungkin memberi Anda titik awal.

Sayangnya, kode kendaraan di PhysX masih 'sampel' dan tidak didokumentasikan dengan baik, sehingga Anda tidak dapat dengan mudah menemukan cara kerjanya. Saya percaya saya telah melihat kode yang berasal dari sampel mereka menampilkan jenis perilaku yang Anda cari dalam 3D, tetapi ini adalah simulasi level yang lebih rendah daripada yang saya pikir Anda inginkan.

Tom Hudson
sumber
1

Hal pertama yang perlu Anda pahami adalah "rasio slip" dan "lingkaran traksi". Slip rasio adalah pendekatan yang baik untuk perilaku ban, dengan hubungan non-linear antara perbedaan sudut dan kekuatan ban lateral. Ini juga memberi Anda informasi umpan balik torsi pengemudi (untuk kemudi setir umpan balik).

Versi super sederhana dari kedua konsep adalah sebagai berikut: semakin banyak perbedaan sudut antara arah bergulir dan arah gerakan, semakin banyak gaya yang ada tegak lurus terhadap arah bergulir (gaya lateral). Mencapai puncak pada (biasanya) mungkin 5 ° hingga 8 ° dan jatuh dari sana jika sudut ban meningkat.

Lingkaran traksi pada dasarnya adalah limiter yang memotong vektor gaya apa pun yang berada di luarnya. Ini memodelkan cara akselerasi / pengereman berat mengurangi kemampuan kemudi, dan sebaliknya. Ukuran lingkaran traksi (vektor gaya traksi maks) berskala dengan kekuatan menekan ban ke tanah.

Anda perlu memodelkan gaya lateral (kemudi) secara terpisah dari torsi penggerak / pengereman (rotasi) dan gaya traksi yang berlawanan dari tanah.

doug65536
sumber