Car Physics. матан1

30 Сен by ray.nymous

Car Physics. матан1

[fruitful_alert type=»alert-success»]да, я знаю что обещал завязывать с гавногеймдевом. но это оказалось не так просто, как я думал. [/fruitful_alert]

в юньке появился стандартный пает Vechacle, но он несколько наивен. и для нормальных проектов не пойдет. думаю допилить, и сделать из него вполне себе годную физику автомобиля.

Матан, го!

Дальше небольшое описание физики, и сил действующих на авто.

Силы

аэродинамика( Aerodynamic drag). вектор её направлен против вектора движения авто. эта же сила действует на оторванные части мишны, вроде капота заставляя открытый капот колыхаться. считаем её как

Fdrag = -Cdrag* V*|V|, где F — скорость, Сdrag- коэффициент формы. константа пропорциональная площади фронтальной части машины. V — вектор ускорения

Сопротивление качению (Rolling resistance). вектор так же направлен против вектора движения

Frr=-Crr * V, где Сrr- коэффициент силы трения поверхности

Гравитация. тут каменты наверное не нужны. Fg

Трение. сила трения действует на колёса как

Ftr = Twheel/Rwheel,

где F — сила препятствующая вращению колеса, Twheel — Реальное вращение колеса полученное от двигателя. Rwheel — Радиус колеса.

общая сила движения Fsumm = Ftr+Fdrag + Frr + Fg.

При торможении, появляется сила

сила Fbraking= -V * Cbraking ,

где Cbrking — константа, V — вектор движения машины.

ускорение машины получаем из закона Ньютона

a=F/M.

скорость получаем как интеграл  ускорения, а позицию машины как интеграл скорости.

Крутящий момент двигателя

чистое вращение от двигателя( engine torgue). Обычно используют кривую крутящего момента (torque curve) показывающую скорость вращения оборотов двигателя, его максимум и затухание.
201004301414_scheme2-575x399 (1)

по оси y — располагается крутящий момент. по оси икс -rpm. (да, это лада калина).

кстати, говоря. если бы мы не учитывали эту няшную курву, и юзали простое ограничение скорости (как в новой физике от юньки), у нас бы лада калина и порш 911, разгонялись до полной скорости абсолютно одинаково. лада калина и порш разгоняющиеся рука об руку. прям мечта советского автопрама

угловое ускорение двигателя рад/сек получаем как

We=2pi Q/60, где pi — это pi, Q — оборот двигателя (engine turnover rate)

коробка передач и угловое ускорение колеса.

вращение двигателя передается колёсам не на прямую, а через трансмиссию.

Tw = Te * gk *G, где Te- крутящий момент двигателя. gk — отношение передачи в данный момент, G — отношение следующий передачи.

отношение между поворотом двигателя и угловым ускорением колеса

Ww = 2pi Q/(60*gk*G),

а скорость колеса

V = r* Ww, где r — радиус колеса, Ww- угловое ускорение колеса

Боковое и Продольное скольжение

[fruitful_alert type=»alert-success»]Тут мы от абстракций подвинимся ближе к юньке, дабы не изобретать велосипедов, и сэкономить себе немного нервов. Расходимся, матана не будет[/fruitful_alert]

при повороте машины на больших скоростях образуется угол между вектором скорости машины, и вектором движения колес. этот угол называют slip angle.

desu

как показано на скрине, есть 2 кривые для горизонтального и фронтального проскальзывания колёс. которые формируют силу в зависимости от угла поворота, и значения Экстремума и Асимптоты. (здорово,когда не надо лезть в матан, правда).

По идее эти два вектора должны при развороте сложится, и дать нам вектор скольжения, который будет как по волшебству примирён к колёсам самой юнькой.

единственный спорный момент, оставшийся не рассмотренным это пружины. в смысле подвеска её  мягкость и размер. её параметры для wheelCollider находятся в разделе Suspension Spring, о них можно читнуть по ссылке ниже.

http://docs.unity3d.com/ScriptReference/WheelCollider-suspensionSpring.html

 

соурцез

gamedev.ru
great article

Добавить комментарий