Физика автомобиля для игр

Физика автомобиля для игр.

Автор: Marco Monster

Введение

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

Одним из ключевых пунктов в упрощении физики транспортного средства является раздельная обработка продольной и боковой силы. Продольная сила работает в направлении корпуса автомобиля (или же в противоположном направлении). Это сила тяги, тормозящая сила, сила трения и сила сопротивления перемещению (= сопротивление воздуха). Вместе эти силы управляют ускорением или замедлением автомобиля, следовательно, и скоростью автомобиля. Боковые силы позволяют автомобилю поворачиваться. Эти силы вызваны поперечным трением на колесах. Мы также рассмотрим угловой момент скорости автомобиля и момент вращения, вызванные боковыми силами.

Примечание и соглашения

На протяжении все этой статьи я буду предполагать, что задние колеса являются ведущими (для четырех ведущих колес нужно применять необходимую адаптацию)

Все физические величины я буду измерять в единицах СИ (метры, килограммы, Ньютоны и т.д.).

Физика движения по прямой

Сначала рассмотрим автомобиль, двигающийся по прямой линии. Какие силы задействованы здесь? Прежде всего, это сила тяги, то есть сила, которая передается двигателем через задние колеса. Двигатель вращает колеса вперед (на самом деле он передает момент вращения на колеса), колеса «толкают назад» поверхность дороги, в результате поверхность дороги выталкивает колеса в противоположном направлении, то есть вперед. Сейчас мы просто положим, что сила тяги эквивалентна по величине переменной Engineforce, которая управляется непосредственно пользователем.

Так же, еще есть сопротивление вращения. Это вызвано трением между резиной и дорожной поверхностью, так как колеса прокручиваются, трением на осях и т.д. Мы обозначим это силой, которая пропорциональна скорости, с использованием другой константы.

При низких скоростях трение (Frr) является основной силой сопротивления, при высоких скоростях Fdrag превышает по значению Frr. Приблизительно при 100 км/час (60 миль в час, 30 м/с) они равны ([Zuvich]). Это означает, что Crr должен быть равен приблизительно 30-ти Cdrag.

Обратите внимание, что если вы двигаетесь по прямой линии, то силы аэродинамического сопротивления и трения будут направлены противоположно силе тяги (Ftraction). То есть вы вычитаете силу аэродинамического сопротивления из силы сцепления. И когда автомобиль движется с постоянной скоростью, то силы находятся в равновесии, и Flong равен нулю.

Ускорение (a) автомобиля (в м/с 2 ) определено равнодействующей силой автомобиля (в Ньютонах) и массой автомобиля М (в килограммах) по второму закону Ньютона:

Скорость автомобиля (в метрах в секунду) определяется, как интеграл ускорения через какое-то время (dt). Это звучит слишком сложным, но следующее уравнение поможет нам. Воспользуемся методом Эйлера для численного интегрирования.

Позиция автомобиля свою очередь определяется, как интеграл скорости по dt.

Используя эти три силы, мы уже довольно точно можем моделировать ускорение автомобиля. Вместе они также определяют максимальную скорость автомобиля для данной мощности двигателя. То есть, нет необходимости устанавливать максимальную скорость где-нибудь в коде, она автоматически вычисляется из уравнений. Дело в том, что уравнения формируют своего рода цикл отрицательной обратной связи. Если сила тяги (Ftraction) превышает все другие силы, то автомобиль ускоряется. Увеличивающаяся скорость, также заставляет увеличиваться силы сопротивления. Равнодействующая сила уменьшается, а следовательно уменьшается и ускорение. В некоторой точке силы сопротивления и сила тяги компенсируют друг друга, и автомобиль достигает своей максимальной скорости для данной мощности двигателя.

Физика автомобиля для игр. Смотреть фото Физика автомобиля для игр. Смотреть картинку Физика автомобиля для игр. Картинка про Физика автомобиля для игр. Фото Физика автомобиля для игр

Источник

Neural Network Racing

В этой статье будем разбираться в нейронных сетях, генетических алгоритмах, физике движения автомобиля и Unity 3D. Попробуем это все слепить вместе и получить игру.

Физика движения автомобиля
Поскольку мы делаем аркадную игру, то нам не нужна физически точная модель автомобиля. Достаточно того, что бы автомобиль вел себя визуально реалистично. При этом, модель должна поддерживать движение вперед/назад, рулевое управление, тормоз и делать реалистичные заносы при большой скорости движения.
Изменение передачи, смещение центра масс и другие более сложные процессы моделировать не будем. По крайней мере, пока.

Для начала, рассмотрим простое движение автомобиля, когда нет заносов и вектор движения машины совпадает с направлением корпуса.
В таком случае можно считать, что все колеса двигаются с одинаковой скоростью Speed. При этом, движение задних колес совпадает с направлением корпуса автомобиля, а передние колеса двигаются под определенным углом к корпусу (в зависимости от угла вращения руля).
Картинка поясняет как будут сдвигаться колеса:
Физика автомобиля для игр. Смотреть фото Физика автомобиля для игр. Смотреть картинку Физика автомобиля для игр. Картинка про Физика автомобиля для игр. Фото Физика автомобиля для игр

Выяснив, как сдвинутся колеса, мы можем определить новые координаты центра корпуса и новый угол поворота корпуса:
Физика автомобиля для игр. Смотреть фото Физика автомобиля для игр. Смотреть картинку Физика автомобиля для игр. Картинка про Физика автомобиля для игр. Фото Физика автомобиля для игр

Более подробно об этом можно почитать здесь.

Теперь рассмотрим ситуацию, когда машину заносит. При заносе вектор движения автомобиля не совпадает с ориентацией корпуса:
Физика автомобиля для игр. Смотреть фото Физика автомобиля для игр. Смотреть картинку Физика автомобиля для игр. Картинка про Физика автомобиля для игр. Фото Физика автомобиля для игр
При повороте, вектор скорости как бы запаздывает от вектора направления корпуса. И в момент заноса эти вектора не совпадают. В формулах это можно выразить следующим образом:

NewVelocity = LootAt * Speed

Наоборот, если k = 0 (абсолютно скользкая трасса), то вектор скорости вообще не будет зависеть от направление корпуса:

Линейное ускорение автомобиля будем считать по классической формуле Ньютона:

Далее, для моделирования трения об воздух, используем следующую формулу:

Моделирование тормоза аналогично моделированию трению об воздух, но коэффициент трения берется значительно бОльшим.

Сведя все формулы вместе, создаем класс CarBase, который моделирует движение автомобиля:

Источник

Физика автомобиля в игровом мире

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

Все началось с того, что я огляделся по сторонам и, не увидев автомобиля своей мечты, решил сконструировать его сам.

1. Реализация на основе копирования и воссоздания реальной физики автомобиля.

2. Реализация в аркадном стиле

Начнем мы с первого типа:

Этот подход включает в себя имитацию колес как независимых физических объектов с собственной массой, трением и подвеской. Затем автомобиль ускоряется, буквально применяя к колесам крутящий момент, и по мере того, как колеса вращаются и соприкасаются с землей вы можете использовать физически движок что бы конвертировать эти силы в движение модели авто. Unity предлагает встроенный компонент под названием WheelCollider, который уже предлагает модель трения для имитации проскальзывания шин, а также довольно интересную систему подвески.

Одним из недостатков реализации гоночной механики таким образом является то, что вам нужно узнать довольно много о том, как работают реальные автомобили, чтобы понять и устранить некоторые проблемы, с которыми вы неизбежно столкнетесь с вашим моделированием. Например, ваша первая попытка использования WheelColliders, вероятно, будет выглядеть примерно так:

Даже при движении на удивительно низких скоростях автомобили будут очень склонны к опрокидыванию, если вы не смоделируете Anti Roll Bar (в основном, если подвеска с одной стороны оси значительно сжата, то вам нужно искусственно сжать подвеску с другой стороны этой оси, чтобы предотвратить слишком большой наклон автомобиля и опрокидывание). Также можно попробовать опустить центр тяжести, уменьшить расстояние подвески, иметь более короткие и широкие автомобили и т.д.

К сожалению, основанный на физике подход добавляет несколько уровней косвенности между настраиваемыми переменными и фактическим результатом, который они имеют на экране. Например, если рулевое управление просто кажется не правильным, то это может быть результатом любой комбинации переменных, таких как масса, крутящий момент двигателя, максимальная скорость, значения подвески, значения проскальзывания шины, расстояние между осью, размеры автомобиля и т. д. В результате проблемы с поиском и устранением неисправностей иногда могут быть разочаровывающими и утомительными. Иногда ваши переменные массы, тяги и сцепления могут стать заоблачными, поэтому полезно тестировать значения в различных масштабах и использовать реальные значения, когда вы можете их получить.

С точки зрения геймдизайна, подход, основанный на физике в целом, приводит к большей сложности, как с точки зрения механики, так и с точки зрения навыков игрока. Многие гоночные игры (например, Mario Kart) просто не просят игроков думать о сцеплениях шин, балансе, импульсе и т. д., но многие из этих элементов обязательны в реализации, основанной на физике. Однако, даже если вы не делаете гоночный симулятор, вы все равно можете добавить эти элементы в своей игре. Они могут разнообразить количество испытаний, которые поддерживают вовлеченность игроков, не полагаясь на механику, не связанные с вождением.

Однако реализации, основанные на физике, как правило, добавляют слишком много сложности. Чистые симуляционные работы просят игроков понять основные методы управления автомобилем, и они, как правило, приводят к багующему, но «правильному» поведению во время маневров, чем то, что вы, возможно, изначально ожидали будет простым.

Существует довольно много игр, которые нашли хороший баланс между физическим взаимодействием и упрощенным вождением, такими как серия FlatOut или MotorStorm. По мере того, как вы разрабатываете свою игру, важно постоянно проверять отдельные механики и необходимые наборы навыков, которые появляются в вашей симуляции, чтобы вы могли решить, сохранить их или сгладить.

Например, физика в MotorStorm часто позволяет автомобилям легко терять сцепление при движении по небольшим неровностям на дороге. Вместо того, чтобы рассматривать это как нечто, что «просто происходит», Evolution Studios, казалось, вместо этого решило расширить его, разработав треки, которые явно привлекли внимание к этой механике, тем самым бросив вызов игрокам, чтобы освоить ее.

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

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

Цель состоит в том, чтобы сделать то, что применимо для гоночной игры, не обязательно делать то, как на самом деле работают автомобили. Вы можете начать с одного BoxCollider, который ускоряется, прилагая силы, когда он касается земли, а затем вы можете решить, что вам нужна либо механика дрифта, либо система сцепления шин, либо и то, и другое. Затем вы можете сосредоточиться на том, чтобы получить физику прыжков, а затем вы можете построить систему для стабилизации автомобиля при приземлении.

Вы можете обнаружить, что вам нужно будет скрыть многие из этих «хаков» с помощью анимации или визуальных эффектов, которые делают игру более сложной. Например, если в вашей игре нет необходимости в механике подвески, то вы можете, по крайней мере, подделать систему подвески, имея визуальные эффекты автомобиля, основываясь на текущем импульсе и ускорении.

Источник

Физика автомобиля для игр.

Автор: Marco Monster

Введение

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

Одним из ключевых пунктов в упрощении физики транспортного средства является раздельная обработка продольной и боковой силы. Продольная сила работает в направлении корпуса автомобиля (или же в противоположном направлении). Это сила тяги, тормозящая сила, сила трения и сила сопротивления перемещению (= сопротивление воздуха). Вместе эти силы управляют ускорением или замедлением автомобиля, следовательно, и скоростью автомобиля. Боковые силы позволяют автомобилю поворачиваться. Эти силы вызваны поперечным трением на колесах. Мы также рассмотрим угловой момент скорости автомобиля и момент вращения, вызванные боковыми силами.

Примечание и соглашения

На протяжении все этой статьи я буду предполагать, что задние колеса являются ведущими (для четырех ведущих колес нужно применять необходимую адаптацию)

Все физические величины я буду измерять в единицах СИ (метры, килограммы, Ньютоны и т.д.).

Физика движения по прямой

Сначала рассмотрим автомобиль, двигающийся по прямой линии. Какие силы задействованы здесь? Прежде всего, это сила тяги, то есть сила, которая передается двигателем через задние колеса. Двигатель вращает колеса вперед (на самом деле он передает момент вращения на колеса), колеса «толкают назад» поверхность дороги, в результате поверхность дороги выталкивает колеса в противоположном направлении, то есть вперед. Сейчас мы просто положим, что сила тяги эквивалентна по величине переменной Engineforce, которая управляется непосредственно пользователем.

Так же, еще есть сопротивление вращения. Это вызвано трением между резиной и дорожной поверхностью, так как колеса прокручиваются, трением на осях и т.д. Мы обозначим это силой, которая пропорциональна скорости, с использованием другой константы.

При низких скоростях трение (Frr) является основной силой сопротивления, при высоких скоростях Fdrag превышает по значению Frr. Приблизительно при 100 км/час (60 миль в час, 30 м/с) они равны ([Zuvich]). Это означает, что Crr должен быть равен приблизительно 30-ти Cdrag.

Обратите внимание, что если вы двигаетесь по прямой линии, то силы аэродинамического сопротивления и трения будут направлены противоположно силе тяги (Ftraction). То есть вы вычитаете силу аэродинамического сопротивления из силы сцепления. И когда автомобиль движется с постоянной скоростью, то силы находятся в равновесии, и Flong равен нулю.

Ускорение (a) автомобиля (в м/с 2 ) определено равнодействующей силой автомобиля (в Ньютонах) и массой автомобиля М (в килограммах) по второму закону Ньютона:

Скорость автомобиля (в метрах в секунду) определяется, как интеграл ускорения через какое-то время (dt). Это звучит слишком сложным, но следующее уравнение поможет нам. Воспользуемся методом Эйлера для численного интегрирования.

Позиция автомобиля свою очередь определяется, как интеграл скорости по dt.

Используя эти три силы, мы уже довольно точно можем моделировать ускорение автомобиля. Вместе они также определяют максимальную скорость автомобиля для данной мощности двигателя. То есть, нет необходимости устанавливать максимальную скорость где-нибудь в коде, она автоматически вычисляется из уравнений. Дело в том, что уравнения формируют своего рода цикл отрицательной обратной связи. Если сила тяги (Ftraction) превышает все другие силы, то автомобиль ускоряется. Увеличивающаяся скорость, также заставляет увеличиваться силы сопротивления. Равнодействующая сила уменьшается, а следовательно уменьшается и ускорение. В некоторой точке силы сопротивления и сила тяги компенсируют друг друга, и автомобиль достигает своей максимальной скорости для данной мощности двигателя.

Физика автомобиля для игр. Смотреть фото Физика автомобиля для игр. Смотреть картинку Физика автомобиля для игр. Картинка про Физика автомобиля для игр. Фото Физика автомобиля для игр

Источник

Физика автомобиля для игр.

Автор: Marco Monster

Введение

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

Одним из ключевых пунктов в упрощении физики транспортного средства является раздельная обработка продольной и боковой силы. Продольная сила работает в направлении корпуса автомобиля (или же в противоположном направлении). Это сила тяги, тормозящая сила, сила трения и сила сопротивления перемещению (= сопротивление воздуха). Вместе эти силы управляют ускорением или замедлением автомобиля, следовательно, и скоростью автомобиля. Боковые силы позволяют автомобилю поворачиваться. Эти силы вызваны поперечным трением на колесах. Мы также рассмотрим угловой момент скорости автомобиля и момент вращения, вызванные боковыми силами.

Примечание и соглашения

На протяжении все этой статьи я буду предполагать, что задние колеса являются ведущими (для четырех ведущих колес нужно применять необходимую адаптацию)

Все физические величины я буду измерять в единицах СИ (метры, килограммы, Ньютоны и т.д.).

Физика движения по прямой

Сначала рассмотрим автомобиль, двигающийся по прямой линии. Какие силы задействованы здесь? Прежде всего, это сила тяги, то есть сила, которая передается двигателем через задние колеса. Двигатель вращает колеса вперед (на самом деле он передает момент вращения на колеса), колеса «толкают назад» поверхность дороги, в результате поверхность дороги выталкивает колеса в противоположном направлении, то есть вперед. Сейчас мы просто положим, что сила тяги эквивалентна по величине переменной Engineforce, которая управляется непосредственно пользователем.

Так же, еще есть сопротивление вращения. Это вызвано трением между резиной и дорожной поверхностью, так как колеса прокручиваются, трением на осях и т.д. Мы обозначим это силой, которая пропорциональна скорости, с использованием другой константы.

При низких скоростях трение (Frr) является основной силой сопротивления, при высоких скоростях Fdrag превышает по значению Frr. Приблизительно при 100 км/час (60 миль в час, 30 м/с) они равны ([Zuvich]). Это означает, что Crr должен быть равен приблизительно 30-ти Cdrag.

Обратите внимание, что если вы двигаетесь по прямой линии, то силы аэродинамического сопротивления и трения будут направлены противоположно силе тяги (Ftraction). То есть вы вычитаете силу аэродинамического сопротивления из силы сцепления. И когда автомобиль движется с постоянной скоростью, то силы находятся в равновесии, и Flong равен нулю.

Ускорение (a) автомобиля (в м/с 2 ) определено равнодействующей силой автомобиля (в Ньютонах) и массой автомобиля М (в килограммах) по второму закону Ньютона:

Скорость автомобиля (в метрах в секунду) определяется, как интеграл ускорения через какое-то время (dt). Это звучит слишком сложным, но следующее уравнение поможет нам. Воспользуемся методом Эйлера для численного интегрирования.

Позиция автомобиля свою очередь определяется, как интеграл скорости по dt.

Используя эти три силы, мы уже довольно точно можем моделировать ускорение автомобиля. Вместе они также определяют максимальную скорость автомобиля для данной мощности двигателя. То есть, нет необходимости устанавливать максимальную скорость где-нибудь в коде, она автоматически вычисляется из уравнений. Дело в том, что уравнения формируют своего рода цикл отрицательной обратной связи. Если сила тяги (Ftraction) превышает все другие силы, то автомобиль ускоряется. Увеличивающаяся скорость, также заставляет увеличиваться силы сопротивления. Равнодействующая сила уменьшается, а следовательно уменьшается и ускорение. В некоторой точке силы сопротивления и сила тяги компенсируют друг друга, и автомобиль достигает своей максимальной скорости для данной мощности двигателя.

Физика автомобиля для игр. Смотреть фото Физика автомобиля для игр. Смотреть картинку Физика автомобиля для игр. Картинка про Физика автомобиля для игр. Фото Физика автомобиля для игр

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *