Fizyka pojazdu z poślizgiem


13

Jak miałbym zająć się tworzeniem fizyki pojazdu dla samochodu, który może stracić przyczepność? Chcę, aby wyglądało to tak, jakby kierowca miał płaską stopę, więc kiedy naciskasz benzynę, samochody napędzające (tylne) koła tracą przyczepność i utrudniają kontrolę. Chciałbym też móc robić pączki i „dryfować” po rogach.

Chciałbym też wiedzieć, ile się dzieje „poślizgiem”, więc mogę dodać proporcjonalną ilość dymu i śladów opon.

Załóż 2-poziomową grę samochodową w stylu odgórnym.

Dzięki

Odpowiedzi:


10

Jest to bardzo uproszczona wersja, ale byłaby w porządku dla większości gier typu arcade. Potrzebujesz następujących właściwości:

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

każda rama:

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

przyspieszyć

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

skręcić w lewo

angularVelocity -= turnSpeed;

skręcić w prawo

angularVelocity += turnSpeed;

Aby uzyskać dobry dryf, ustaw drag i AngularDrag na bardzo blisko 1, np. 0,9


Czy sterowanie to moc (przepustnica) i prędkość kątowa (kierowanie)? A może brakuje mi jakiejś transformacji?
drxzcl

nie, to wszystko - zapomniałem wyjaśnić, jak kierować. Zaktualizowałem o nową zmienną turnSpeed.
Iain

2

Czytałem dzisiaj artykuł, który symuluje pewną dynamikę pojazdu podczas zderzenia i spin-out:

Jing Zhou; Jianbo Lu; Huei Peng, „Dynamika pojazdu w odpowiedzi na manewr techniki precyzyjnego unieruchomienia”, Materiały z konferencji ASME Dynamic Systems and Control Conference 2008

Zawiera model fizyczny, który reprezentuje moment wywracający i utratę przyczepności tylnej opony podczas odchylenia spowodowaną celową siłą zderzenia. Programiści interesujący się dynamiką pojazdu podczas kolizji wydają się interesujący.


Całkiem studium, ale niestety nie odpowiednie dla danego problemu. Artykuł jest analizą 3D, z rolką pojazdu i wszystkim. Pytanie dotyczy gry w widoku z góry 2D. Tak więc fizyka 2D, a nie 3D.
Bram

1

Ogólnie nie polecam fizyki Bourga dla programistów gier , ale mówi o tym trochę w rozdziale 10 (na stronie 171) i może dać ci punkt wyjścia.

Niestety kod pojazdu w PhysX jest nadal „przykładowy” i nie jest dobrze udokumentowany, więc nie można łatwo zorientować się, jak to działa. Wydaje mi się, że widziałem, jak kod pochodzący z ich próbki wyświetla rodzaj zachowania, którego szukasz w 3D, ale jest to symulacja niższego poziomu, niż myślę, że chcesz.


1

Pierwszą rzeczą, którą musisz zrozumieć, jest „współczynnik poślizgu” i „koło trakcyjne”. Współczynnik poślizgu jest dobrym przybliżeniem zachowania opony, z nieliniową zależnością między różnicą kątów a siłą boczną opony. Zapewnia również informacje zwrotne od momentu obrotowego kierowcy (dla kierownicy ze sprzężeniem zwrotnym siły).

Super prosta wersja obu koncepcji jest następująca: im większa różnica kątów między kierunkiem walcowania a kierunkiem ruchu, tym większa siła jest prostopadła do kierunku walcowania (siła boczna). Osiąga szczyt przy (zwykle) może od 5 ° do 8 ° i stamtąd spada, jeśli kąt opony zostanie zwiększony.

Okrąg trakcyjny jest w zasadzie ogranicznikiem, który odcina każdy wektor siły wychodzący z niego. Modeluje sposób, w jaki duże przyspieszenie / hamowanie zmniejsza zdolność kierowania i na odwrót. Rozmiar koła trakcyjnego (wektor maksymalnej siły trakcyjnej) skaluje się wraz z siłą dociskającą oponę do podłoża.

Trzeba będzie modelować siłę boczną (kierującą) oddzielnie od momentu napędowego / hamującego (obrotowego) i przeciwnej siły trakcyjnej od podłoża.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.