UnityCar — автомобили с физикой для Unity3D
Игровой движок Unity3D не нуждается в особом представлении. Для тех, кто не знает, что это такое, могут посмотреть сайт unity3d.com/unity/ или поискать другие топики на хабре про этот замечательный кросс платформенный движок. Для него уже написано множество дополнений, моделей и других пакетов. Об одном из них и пойдет речь.
UnityCar — полноценный физико-реалистичный пакет симуляции автомобилей для Unity3D, который прост в использовании и реализует множество физических моделей, включая модели повреждений и разрушений.
Небольшое видео, демонстрирующее возможности пакета:
Создание игр — процесс сложный. Существует множество решений, которые призваны облегчить этот процесс. Одни движки специализируются только на графике и управлении (например XNA), другие на физических расчетах (например NVidia PhysX), другие на чем-то еще. Но Unity3D позволяет соединить различные части игровой и графической логики воедино (о чем название «как-бы намекает»). PhysX позволяет делать базовые физические расчеты, поэтому вам требуется глубокое понимание процессов механики, аэродинамики, гидродинамики для создания физико-реалистичных игр. Но такая прикладная вещь, как физика транспортных средств может быть реализована в виде конечного числа кода, требующего минимум навыков со стороны вас (разработчика игры). UnityCar как раз и реализует соответствующую физику в рамках проектов на Unity3D.
Возможности UnityCar
Несмотря на простоту установки (в два клика) и использования, данный движок не страдает в функциональном плане, и можно выделить его основные возможности.
Реалистичная модель шин
В теоретической части, в основном опирается на формулы Hans B. Pacejka (эксперт в области физики транспортных средств и колесных систем). Также применяются уравнения продольной и боковой релаксаций и (опционально) уравнения упругой деформации.
При этом производится поиск всех точек соприкосновения шины с дорожным покрытием, а не только одной (как в случае с Wheel Collider), но это может быть отключено при использовании аркадного режима (то есть с упрощенной физикой и меньшим использованием ресурсов).
Реалистичная модель подвески, трансмиссии
Моделируется поведение пружин, амортизаторов (как на сжатие, так и на растяжение) и стабилизатора поперечной устойчивости.
Реализованные полноценные модели сцепления, дифференциала, передач и шестеренок.
Разрушения и повреждения
Возможны деформации кузова транспортного средства, выход из строя отдельных его частей. Также, машины можно ремонтировать. В следующих версиях планируется расширить модель разрушений, в том числе добавить воспламенения и взрывы машин.
Внешние элементы
Встроена функциональность тормозных фар, приборной панели. Приборная панель может быть настроена произвольным образом, могут быть выведены спидометр, счетчик оборотов, тахометр, ABS, передача и т.д.
Звуковое сопровождение
Звуковая часть движка воспроизводит всевозможные виды шумов, такие как шумы двигателя, подвески, трансмиссии, шин, повреждений, заносов, трения, езды по песку, по траве, по бездорожью. Звук также зависит от модели автомобиля.
Упрощение вождения
Неблокирующие тормоза, система стабилизации, контроль тяги, тренировочный режим. Аркадный режим, в нем значительно упрощается физическая модель, управление становится проще, но при этом снижается реалистичность. В некотором смысле, этот режим схож с вождением в GTA4.
Демонстрации
Чтобы не брать кота в мешке, вы можете попробовать несколько демонстраций, где реализованы различные фичи движка. Эти примеры не претендуют на фото реалистичность, но позволяют опробовать возможности UnityCar прямо в браузере (в Unity Web Player).
Использование движка
UnityCar можно применять везде, где работает Unity3D. Сам движок написан на C# и поставляется в комплекте с исходным кодом. Движок также работает на мобильных платформах (iOS и Android) и выполняет работу с приемлемой скоростью. UnityCar совместим с аналоговыми устройствами управления (руль, педали).
Можно настроить множество параметров, а в случае отсутствия желаемой настройки вы можете внести изменения в исходный код. Имеется вики-документация и возможность обратной связи. Отдельное внимание уделяется производительности движка, особенно на мобильных устройствах.
Условия приобретения
Простая машинка в Unity
Урок по созданию простой машинки в среде Unity при помощи компонента WheelCollider. Описаны базовые настройки этого компонента. Для понимания урока необходимы базовые знания среды Unity.
Введение
С английским у меня неплохо, поэтому когда понадобилось сделать машинку в проекте, хватило стандартного примера, однако, хоть и написано, что он «аркадный», все же пример затрагивает гораздо больше вопросов, и один только pdf документ весит 11 мб, а сам пример 212 мб.
От того примера сложилось впечатление, будто нам дали готовый проект, рассказали как менять параметры, чтобы можно было поиграться, но не стали особо объяснять, как его сделали шаг за шагом. Кроме того, он на английском, отсюда родился порыв сделать урок для GameDev.ru.
Я хочу описать самый примитивный вариант создания машинки, управляемой с клавиатуры, освоив который уже стоит браться за более сложные примеры.
Создаем по шагам
1. Итак создадим четыре пустых объекта для удобной иерархии в нашем объекте:
- carRoot — контейнер для всех элементов машины (геометрия, свет, камеры, объекты для скриптов)
car — контейнер для объектов именно машины,
physic — контейнер для физических моделей колес,
graphic — графические объекты.
2. Добавим в carRoot камеру и закинем на нее стандартный скрипт SmoothFollow, однако на 32 строке добавим или внешнюю переменную angle, или просто добавим поворот на 90 градусов, так как стандартный скрипт заставляет камеру быть сбоку от объекта :
3. в car добавляем компонент RigidBody, его масса — это масса корпуса машины, она будет влиять на устойчивость и на то, насколько сильно он прижимает колеса.
Для того чтобы на поворотах нас не сильно заносило, и при падении машина возвращалась в правильное положение, а не переворачивалась, нам потребуется два изменения — компонент ConstantForce в car, который будет прижимать машину на поворотах, кроме того, переместим центр массы машины вниз, добавив на нее скрипт carControl с кодом вроде этого:
4. В physic создаем пустой объект body с компонентом CapsuleCollider — это будет простой корпус машины, обтекаемый и не дающий застревать в стенках.
5. создаем пустой объект wheel_BL и добавляем ему компонент WheelCollider, и настраиваем его:
- Center — расположение колеса,
Radius — радиус колеса,
Suspension Distance — длинна пружин подвески.
Suspension Spring : Spring — сила пружины подвески, чем выше тем сильнее пружинит,
Suspension Spring : Damper — сила амортизатора, делает более плавным движение пружины.
Mass — масса колес, опять же влияет на поведение на заносах, прыжках.
Теперь добавим в объект wheel_BL простой цилиндрический меш, чтобы так сказать, иметь отладочную версию, впрочем, можно ограничится тем, что Unity нам и так предоставляет.
6. Раскопируем наше колесо до нужного числа, например, 4 — в принципе, машинка уже готова.
Теперь нам нужно только заставить колеса вращаться с ускорением по нажатию клавиш и поворачиваться, что можно сделать например так :
Заключение
Собственно, теперь вы можете соорудить любое нечто на колесах, можно прикрепить две группы (подвески) по два колеса друг к другу джоинтами (как в этом уроке) или сделать вращение колес при развороте, как у танка. Широкий простор для креатива.
Движение автомобиля и настройка физики в Unity.
В этом уроке я хочу рассказать вам как создать физику и движение автомобиля. Для этого нам потребуется модель самого авто/машина (без колес) и сами колеса, так же нам нужно скачать бесплатный ассет для unity, Car System, из которого мы возьмем несколько скриптов для нашего авто.
И так, начнем! Я использовал модель ЗИЛа, сделав в blender его колеса отдельными объектами.
Если вам потребуется модель можете скачать здесь.
Создадим плоскость или terrain, для того, чтобы наш автомобиль смог двигаться и перенесем модель зила на сцену.
Перейдем в Asset Store и импортируем в наш проект CarSystem.
До того как начать настраивать физику автомобиля, необходимо подготовить нашу модель. Добавим компонент Rigibody к нашей модели.
Создадим пустой объект на сцене и сделаем его дочерним нашей модели зила.
К этому объекту создадим еще 4 пустышки и переименуем их.
К каждому из этих объектов добавим компонент WheelCollider и настроим их таким образом:
Расположим их так, чтобы они находились примерно в каждом колесе (важно назначить каждому компоненту имя, чтобы не перепутать их в дальнейшем местами).
Вернемся на нашу модель и добавим скрипт Car из ассета CarSystem.
В скрипте Car откроем вкладку Wheel и добавим 4 колеса, в каждом колесе в строках whell collider укажем наши пустышки с компонентами wheel collider, в строке wheel transform укажем наши колеса. (Будьте внимательны, каждый коллайдер должен совпадать с расположением колеса, т.е. если вы указали коллайдер переднего правого колеса, то и модель колеса должна быть указана передняя правая, иначе ничего не получится). Советую для начала указать первые два колеса передние, для них поставить галочки ismotor и isfront. В строке Engine torque указать значение 0.22. Для задних колес, тот же параметр будет равен 0.28 и так же стоять галочки только на ismotor.
Укажем массу зила в компоненте rigibody и в скрипте car равную 4300. Вкладку Engine настроем вот так:
Во вкладке Transmission в строке defferintial rotation укажите 2.67, в строке front bake torque 4500 и в строке Back Brake Torque 4000
далее в строках max speed укажите 90 и hp 100
Нажмите на график Gear Ration_Curve и создайте примерно такой график (чтоб создать точку нажмите правой кнопкой мыши на график и выберете Add Key)
В этом скрипте больше ничего настраивать не нужно, следующие скрипты которые нужно добавить на авто это: car control, wings, steering, tcs system, anti roll bar 2 шт и user input.
В одном скрипте anti roll bar укажите компоненты с wheel collider передние, а в другом задние
Теперь создадим еще одну пустышку к нашему авто и добавим к ней box collider, настроем его примерно так:
Теперь можно проверить игру, ЗИЛ двигается, но средние колеса не крутятся, для этого создадим скрипт Transformwhel, который будет повторять за задними колесами.
Этот скрипт поместим на средние колеса и укажем в строке whell2 одно из задних колес.
Снова проверяем, если все компоненты настроено правильно, то все получится и наш авто поедет.
Лучшие игры на движке Unity. Часть 1
Подборка видеоигр, позволяющих оценить потенциал Unity.
официальный арт к игре Hollow Knight / Team Cherry
Unity — технология для разработки видеоигр, созданная американской компанией Unity Technologies в 2005 году. Движок поддерживает более двадцати платформ, среди них ПК, консоли, смартфоны, веб-браузеры, Smart TV.
Помимо геймдева, Unity используют в кинематографе, анимации, автоиндустрии, транспорте, архитектуре и строительстве. Модель распространения — условно-бесплатная, есть несколько типов лицензий:
Глава Unity Technologies — Джон Ричителло, до этого занимавший руководящие должности в Electronic Arts: с 1997 года по 2004-й он был исполнительным директором компании, а с 2007-го по 2014-й — генеральным.
Директор по графике — Наталья Татарчук. Главные направления её работы — технологии рендеринга и производительность движка. До этого работала инженером-архитектором и ведущим специалистом по графике в студии Bungie. Для франшиз Destiny и Halo Наталья разрабатывала кроссплатформенный движок для рендеринга.
«Я всегда радуюсь разнообразию способов использования Unity. Как человеку, который зарабатывал на жизнь написанием алгоритмов, мне приятно, когда разработчики берут наш алгоритм или функцию и придумывают неожиданный способ её использования. Мы создаём инструменты, дающие людям основу для творчества. Главное, чтобы конечный результат воспроизводил то, что у них в голове, их видение, их мир».
Наталья Татарчук,
директор по графике в Unity
Наш выбор остановился на десяти играх, которые, как нам кажется, раскрывают потенциал Unity. В подборке — инди и проекты ААА-студий, платформеры и стратегии, симуляторы выживания и RPG, одиночные и мультиплеерные игры. Это первая часть материала — в ней речь пойдёт о пяти играх, созданных на Unity.
Подробнее о движке и других условно-бесплатных графических технологиях читайте в другом нашем материале.
Сценарист и копирайтер. Утверждает, что видел все фильмы и прошёл все игры, но редакция отказывается ему верить.
Hollow Knight
Unity завоевал славу движка, популярного среди независимых создателей игр. Например, большинство разработчиков инди-сообщества itch.io выбрали для своих проектов именно эту технологию.
Первые концепты 2D-платформера Hollow Knight появились на геймджеме Ludum Dare 27. Австралийские разработчики — Ари Гибсон и Уильям Пеллен — стали развивать свои идеи, зародившиеся на хакатоне, и запустили кампанию на Kickstarter. Собрав 57 тысяч долларов, они основали студию Team Cherry.
Hollow Knight — метроидвания, события которой происходят в подземном городе жуков. Вымышленный мир устроен как большой лабиринт со множеством секретов, неожиданных проходов и постоянных препятствий. Геймплей жанра завязан на бэктрекинге : главный герой изучает мир, приобретает новые способности, а затем возвращается в старые уровни, чтобы найти этим способностям применение.
«Мы не задумывались о жанре нашей игры, не хотели загонять себя в жанровые рамки. Некоторые механики были взяты из Metroid и Mega Man, система амулетов — из Paper Mario. Мы не слишком беспокоились о том, чтобы Hollow Knight была именно метроидванией, просто пытались создать захватывающее приключение. Мы наполняли мир интересными персонажами в непривычном сеттинге, добавляли точки интереса и связи, сюрпризы и неожиданные события».
Система амулетов, влияющих на передвижение и бой, позволяет менять билд персонажа во время сохранения на скамейке. В зависимости от конкретного препятствия игрок может собрать подходящую комбинацию амулетов.
Минималистичная графика, мрачный и готичный арт-дизайн Hollow Knight напоминают, что красивые игры не обязательно должны быть нацелены на грандиозные технические достижения.
«Главный герой — самый обычный жук, посвящённый в рыцари. Внешность персонажа состоит из множества технических ограничений, которые иногда полезны для творчества. Надев на жука маленький плащ, игрок не сможет увидеть его конечности. Мы просто попытались создать что-то простое, потому что, каким бы ни был ваш герой, вы будете рисовать его тысячу раз. Минимализм — безусловно — помогает разработке».
Уильям Пеллен,
создатель Hollow Knight
Team Cherry создала отличительный визуальный стиль из нарисованных от руки рисунков и традиционной анимации, сделанной в Photoshop. Вместо сложных 3D-систем освещения разработчики использовали мягкие прозрачные формы. Команда создавала уровни с помощью 2D-активов, наложенных на 3D-среду, используя двухмерную физику, упаковщик спрайтов и систему частиц из набора инструментов из магазина ассетов.
С момента релиза в 2017 году Hollow Knight продалась тиражом свыше трёх миллионов копий. Team Cherry развивают франшизу: вышло четыре бесплатных DLC, анонсирован сиквел с подзаголовком Silksong. Главным героем продолжения станет Хорнет, которую игроки уже встречали в оригинале.
Ori and the Will of the Wisps
Ori — серия двухмерных платформеров в жанре метроидвания, разработчиком выступила Moon Studios. Австрийская студия была основана в 2010 году, уже в 2011-м началось партнёрство с Xbox Game Studios, которая издаёт Ori. Обе части сначала вышли на платформах Microsoft — Windows и Xbox.
Основатели Moon Studios — бывший художник персонажей Blizzard Томас Малер и бывший главный графический инженер Animation Lab Геннадий Король. Студия работает полностью удалённо — по сути, это международное сообщество разработчиков, до этого занимавшихся ААА-играми.
Движение автомобиля и настройка физики в Unity.
В этом уроке я хочу рассказать вам как создать физику и движение автомобиля. Для этого нам потребуется модель самого авто/машина (без колес) и сами колеса, так же нам нужно скачать бесплатный ассет для unity, Car System, из которого мы возьмем несколько скриптов для нашего авто.
И так, начнем! Я использовал модель ЗИЛа, сделав в blender его колеса отдельными объектами.
Если вам потребуется модель можете скачать здесь.
Создадим плоскость или terrain, для того, чтобы наш автомобиль смог двигаться и перенесем модель зила на сцену.
Перейдем в Asset Store и импортируем в наш проект CarSystem.
До того как начать настраивать физику автомобиля, необходимо подготовить нашу модель. Добавим компонент Rigibody к нашей модели.
Создадим пустой объект на сцене и сделаем его дочерним нашей модели зила.
К этому объекту создадим еще 4 пустышки и переименуем их.
К каждому из этих объектов добавим компонент WheelCollider и настроим их таким образом:
Расположим их так, чтобы они находились примерно в каждом колесе (важно назначить каждому компоненту имя, чтобы не перепутать их в дальнейшем местами).
Вернемся на нашу модель и добавим скрипт Car из ассета CarSystem.
В скрипте Car откроем вкладку Wheel и добавим 4 колеса, в каждом колесе в строках whell collider укажем наши пустышки с компонентами wheel collider, в строке wheel transform укажем наши колеса. (Будьте внимательны, каждый коллайдер должен совпадать с расположением колеса, т.е. если вы указали коллайдер переднего правого колеса, то и модель колеса должна быть указана передняя правая, иначе ничего не получится). Советую для начала указать первые два колеса передние, для них поставить галочки ismotor и isfront. В строке Engine torque указать значение 0.22. Для задних колес, тот же параметр будет равен 0.28 и так же стоять галочки только на ismotor.
Укажем массу зила в компоненте rigibody и в скрипте car равную 4300. Вкладку Engine настроем вот так:
Во вкладке Transmission в строке defferintial rotation укажите 2.67, в строке front bake torque 4500 и в строке Back Brake Torque 4000
далее в строках max speed укажите 90 и hp 100
Нажмите на график Gear Ration_Curve и создайте примерно такой график (чтоб создать точку нажмите правой кнопкой мыши на график и выберете Add Key)
В этом скрипте больше ничего настраивать не нужно, следующие скрипты которые нужно добавить на авто это: car control, wings, steering, tcs system, anti roll bar 2 шт и user input.
В одном скрипте anti roll bar укажите компоненты с wheel collider передние, а в другом задние
Теперь создадим еще одну пустышку к нашему авто и добавим к ней box collider, настроем его примерно так:
Теперь можно проверить игру, ЗИЛ двигается, но средние колеса не крутятся, для этого создадим скрипт Transformwhel, который будет повторять за задними колесами.
Этот скрипт поместим на средние колеса и укажем в строке whell2 одно из задних колес.
Снова проверяем, если все компоненты настроено правильно, то все получится и наш авто поедет.