🇺🇦 Домой

Делаю машинки часть 1 (про WheelCollider в unity)

ОПУС ПРО МАШИНКИ И ЮНИТИ

В-общем ту "первую игру" про борд - я себе прощаю и считаю завершенной. Вторая, как я решил, будет про машинки.

И понеслась..

Модельку машины сделать - я сделал. Даже несколько.

А потом надо же сделать чтоб машинка "ехала". Скейт мой ехал путём присваивания линейной скорости КВАДРАТНОЙ КОРОБКЕ (rigid body)

Для машинки - так просто не получится. Решил разобраться как люди делают. Разбираться буду в 3х частях, мужики:

  1. буду делать машинку с wheel collider встроенным в юнити
  2. буду делать машинку с "аркадной физикой" какую "сделаю сам"
  3. почитаю исходники "примеров" для гоу-картов с сайта юнити/может еще чьи-то, и сделаю им "вскрытие" здесь тоже

Часть первая - Wheel Collider

Оказалось в юнити есть wheel collider - модель "подпружиненной массы".

Условной "тяжелой" машинки, кузов которой - всё та же прямоугольная коробка (в плане просчёта столкновений) на 4х (юнити вроде разрешает до 20ти) колесах.

Между каждым колесом и кубиком - амортизирующая подвеска, которая "пружинит" колёса.

Начал читать-пробовать: самые смешные фейлы снять - не снимал, но один покажу.

Потом оказалось что сами wheel colliders должны быть отдельными обьектами, не вложенными в геометрию (mesh) колёс.

Ну сейчас я с точки зрения логики понимаю: в юнити у каждого обьекта (ноды условной) - есть проперти transform.

Это и положение, и угол поворота и масштаб её.

"Принято" wheel collider-ы ставить отдельно, а колёса - просто "вращать" в каждом кадре, основываясь на повороте wheel collider-а.

Если попытаться ЛОГИКУ колеса вложить в mesh колеса - они начнут друг друга крутить, и получится лютый треш, летяющие вокруг машины колёса итд.

unity-screenshot

ну и поехало немножко

Настраивается подвеска и "трение колёс" (на самом деле это сила трения поверхности, по-которой едешь, но пацаны из юнити засунули это в колесо. Заехал на снег - в колесе поменяй!

В четырёх колесах! Не слишком тупо на самом деле, мейкс сенс). Колёса настраиваются всеми вот этими параметрами. Что они делают - так без поллитра сразу неясно.

/unity/params.png

Словарь английских слов, какие мне пришлось освоить

Torque [tôrk] - это крутящий момент. А крутящий момент - это векторное произведение положения обьекта в пространстве на вектор прикладываемой к нему силы. В юнити это КАК СИЛЬНО КОЛЕСО вертится (ну и ВЗАД или ВПЕРЁД вертится ли, основываясь на знаке "+" или "-").

А ещё фраза "вот это ТОРКнуло" обрела совсем другой смысл. Всем кто захотел вспомнить всю эту физику - на ютубе всё есть.

Damper [dampər] - все мне хотят перевести как "демпфер". Слово "демпфер" я не знал, но знал амортизатор. Ну не совсем тупой, выдыхаю. Амортизатор это короче.

Что такое acceleration мы все знаем, deceleration - внезапно тоже есть, и смысл его более-менее понятен.

Suspension [səˈspɛnʃən] - это подвеска, значит. Зачем в машине есть подвеска и чё там как - тоже можно на ютубе освежить.

Damp [damp] - это то что характеризует демпфер, АМОРТИЗАЦИЯ короче.

Droop [dro͞op] - это "свисать", если глагол. Как ушки и пса Друпи. А как имя существительное - это скорей "увядание" или там "угасание" силы.

https://i.redd.it/bmbvz29h0l611.jpg

Потом я какое-то время пытался понять что же такое Force App Point Distance. А это, господа, точка, в которой условный центр СИЛЫ ТЯГИ (Traction ) прикладывается.

Сила тяги, это "крутящий момент разделить на радиус вращения" в нашем случае, зависимость - понятна, а вот зачем точку эту менять? - Вздыхаю ..

unity-screenshot

Значит точка эта, она скорей всего находится в самом низу, где колесо с трассой соприкасается (и значение параметра для этого случая в юнити - 0).

Пацаны из документации по-юнити, говорят что вот у КРУТЫХ ТАЧЕК эта точка чуть ниже ЦЕНТРА МАССЫ вашего автомобиля. Потому на картинке - значение 0.16. А 1 - это прям на верхушке колеса приложить эту силу (под крылом).

Взяв это очень условное понимание первых 10 параметров (без трения и угловой функции) надо было к чему-то прийти. Не зря читал же.

Мои личные выводы

Я очень рад, что несколько дней провёл за чтением статеейк с сайтов типа "устройство автомобиля". "Дорога толкает автомобиль", пацаны. Я так и знал что везде - заговор!

Про векторы что-то из школы вспомнил. Что такое линейная интерполяция например, когда в сурцах у кого-то Lerp увидел. Понятия - простые, слова - СТРАШНЫЕ!

А вывод я вот какой делаю:

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

А вместо этого я должен настраивать 16 разных компонентов проде МАССЫ НАД КОЛЕСОМ, РАДИУСА колеса, угловых и линейных трений - даже с формулами оно контринтуитивно до жути.

Попытки 2 дня ПОНЯТЬ эти числа привела к таким очень далёким от удовлетворительных результатов. Попытки тупо скопировать чужие "волшебные цифры" - поменяла поведение машинки в лучшую сторону драматически, хотя значения от моих отличались - на десятые и сотые условных единиц. Сам я желаемых результатов, даже после всего этого анализа - скорей всего не добьюсь.

Мне нужна машинка какая будет прыгать с трамплинов, круто поворачивать и никогда не переворачиваться. Машинка какая без проблем заезжает на все опуклости и выпуклости, без подскоков в воздух, короче мне нужна "не реалистичная" машинка. Не реалистичную буду делать и рассказывать во второй части этого ОПУСА ПРО МАШИНКИ.

небольшую затравочку того ЧТО ЖЕ ТАМ БЫЛО - я сейчас затизерю (так как этап - уже почти пройденный):

Ну и приложу МАТЕРИАЛЫ какие читал, пацаны:

Сворованная шпаргалочка из какого-то твиттера

/unity/wheel.jpg

Рассуждения умного дяденьки про реализм и аркадность

https://superheroesinracecars.com/2016/08/11/implementing-racing-games-an-intro-to-different-approaches-and-their-game-design-trade-offs/

"Словарную работу" делать и писать этот пост я начал недели 2 назад, и я очень счастлив что я могу закончить эту грёбаную первую часть. За эти 2 недели у меня икспаерился домен, ложились сервера сёрдж, я делал кучу всяких отличных от этого поста дел и вот - доделал. Всех обнял.

12-11-2019, unity, wheelcollider