- Unity 5 . Physics Car
- Движение автомобиля и настройка физики в Unity.
- Руководство к Car Tutorial (Unity3d): Изучение альтернативной физической модели (часть 1 из 3)
- Изучение альтернативной физической модели:
- Изучим описание скриптов.
- Подготовка автомобиля
- Настройка автомобиля
- Создание колёс
- Добавление центра тяжести и коллайдера автомобиля
- Создание центра тяжести
- Создание Collider для тела автомобиля
- Создание Collider для крыши автомобиля
- Создание и настройка автомобиля
- Main Camera — настройки
Unity 5 . Physics Car
Движение автомобиля и настройка физики в 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 одно из задних колес.
Снова проверяем, если все компоненты настроено правильно, то все получится и наш авто поедет.
Источник статьи: http://3dgame-creator.ru/catalog/uroki/unity-5-physics-car/
Руководство к Car Tutorial (Unity3d): Изучение альтернативной физической модели (часть 1 из 3)
Прежде чем начнем, хочу предупредить, что это не перевод официального руководства, а мое личное руководство к установке физики на автомобиль.
Изучение альтернативной физической модели:
В официальном руководстве говорилось о физике автомобиля, которая имеет упрощенную модель и имеет много недостатков, которые можно прочитать в самом конце Часть 3 руководства. Или посмотреть это видео:
P.S Для тех у кого модели экспортированы, можем сразу же перейти к настройке автомобиля Переход, а так же могут просмотреть видео по настройки автомобиля (дополнение к статье) :
Итак, давайте приступим по-порядку.
Для начала скачаем скрипты, которые нам понадобятся (cкачать), в каждом скрипте представлены комментарии, мы кратко изучим описание каждого скрипта. Что бы иметь общее представление.
Изучим описание скриптов.
AerodynamicResistance.cs: Этот скрипт, должен быть добавлен к каждому автомобилю, чтобы вычислить аэродинамическое трение автомобиля.
AntiRollBar.cs: При необходимости добавьте, чтобы имитировать стабилизатор поперечной устойчивости для лучшей управляемости.
CarController.cs: скрипт для обработки управления автомобилем. Этот скрипт необходим для каждого автомобиля. Вы можете редактировать этот скрипт, если вы хотите изменить управление автомобилем или реализовать ИИ. Также устанавливает некоторые характеристики корпуса автомобилей, таких как центр тяжести и инерции.
CarCamera.cs: Скрипт для камеры. Который после настроек будет следить за нашим авто.
Drivetrain.cs: двигатель и трансмиссия автомобиля. Этот скрипт содержит коробку передач и двигатель. Один из скриптов необходимый в автомобиле.
SoundController.cs: Простой класс, чтобы проигрывать звуки автомобиля и другие звуки. Этот скрипт должен быть добавлен на автомобиль.
TractionHelper.cs: При необходимости добавьте этот скрипт на автомобиль, чтобы сделать его более устойчивым.
Wheel.cs: Этот скрипт имитирует модели шин и подвески колес, и действует в качестве замены в Unity встроенного компонента Wheel Collider.
Wing.cs: Добавьте один скрипт или более одного, если вы хотите имитировать прижимную силу аэродинамики для вашего автомобиля.
Подготовка автомобиля
На самом деле это самая важная часть, я столкнулся с рядом проблем в работе физики автомобиля из-за неправильного экспорта. И так давайте сначала познакомимся с системой координат правосторонней и левосторонней.
Blender использует правостороннюю систему координат с осью Z, направленной вверх. Такую систему координат используют почти все САПР. Смотрите рисунок:
Unity3d как почти любой другой игровой движок использует левостороннюю систему координат. Когда Y направлен вверх, X — вбок, Z- вперед. Смотрим рисунок:
Следовательно сначала для правильного экспорта автомобиля, мы должны для себя уяснить, что Z+ это будет направление в игре когда автомобиль движется вперед, (Z-) — направление когда автомобиль движется назад. (X+-) это направления поворота вбок — но это в Unity, которая использует левостороннюю систему координат. А в правосторонней системе координат (Blender, 3ds max) Y+ это будет направление когда автомобиль смотрит вперед и (X+-) это направления вбок. Это значит что автомобиль должен стоять в сцене так, как на рисунке, в противном случае ждите проблем с физикой:
Все параметры вращения должны стоять на 0 для дальнейшей работы и для правильной генерации Меша (Mesh), надо Scale установить по умолчанию. Для этого мы сделаем следующие действия в Blender.
1)Выделим все объекты в сцене (клавиша A)
2)Object>Apply>Rotate & Scale.
Теперь все параметры вращения приняты и установлены на 0. А параметры масштабирования (Scale) установлены на по умолчанию (1). Смотрим рисунок:
Теперь можем делать «Правильный экспорт» из правосторонней системы координат в левостороннюю систему координат.
1)Выделим все объекты (клавиша A)
2)Жмем последовательность R>X>-90.
3)Object>Apply>Rotate.
4)Жмем последовательность R>X>90.
Обязательно делайте в данной последовательности. Далее экспортируем модель в Unity. File>Export>FBX со следующими настройками:
После экспорта модели, идем в папку с этой моделью и копируем папку Textures (папку с текстурами) и наш FBX файл. В папку Assets нашего проект. Это позволит Unity импортировать модель прямо с текстурами, которые были настроены в Blender.
Настройка автомобиля
Создадим Prefab и закинем наш объект в Prefab.
1)Вкладка Assets>Create>Prefab
2)Переименуем new prefab в Car
3)Перетащим методом D&D наш Ассет Vaz_2106_mesh в наш Prefab с именем Car.
4)Перетащим методом D&D наш Prefab с именем Car на сцену.
Структура Prefab Car следующая:
VAZ2106_Car_body — Содержит множество элементов, это и двери и фары и бампера и т.д (упрощенная структура автомобиля)
VAZ2106_Car_window — Окна автомобиля.
VAZ2106_WheelFL — Переднее левое колесо.
VAZ2106_WheelFR — Переднее правое колесо.
VAZ2106_WheelRL — Заднее левое колесо.
VAZ2106_WheelRR — Заднее правое колесо.
Теперь добавим физику нашему автомобилю.
1) Выделим наш объект — автомобиль (у меня это Car).
2) Перейдем на вкладку Inspector нажмем кнопку Add component>Physics>Rigidbody.
3) Заходим в компонент Rigidbody и делаем настройки (желательно более приближено к оригинальной модели).
В моем случае полная масса автомобиля 1445 кг. Mass= 1445. Все остальные характеристики ставим на 0. т.к они отвечают за сопротивление. А за сопротивление у нас будет отвечать отдельный скрипт AerodynamicResistance.cs.
Настройки Rigidbody у вас должны быть примерно такими:
Кроме массы автомобиля.
Создание колёс
Создадим пустой объект для каждого из колёс — (нужно что бы к каждому отдельному колесу применить скрипт Wheel).
1)Правый клик мыши по Prefabs нашего автомобиля > Create Empty
2)Переименуем наш пустой объект с именем GameObject на WheelFL (по аналогии с VAZ2106_WheelFL)
3)Изменим координаты X,Y,Z объекта WheelFL на координаты объекта VAZ2106_WheelFL, а координаты объекта VAZ2106_WheelFL сменим на 0.
4)Перетащим методом D&D наш VAZ2106_WheelFL в объект WheelFL.
5)Повторим пункт 1-4 еще 3 раза меняя название GameObject в соответствии с нашими колесами.
У нас должна получится следующая структура файлов:
Далее добавим скрипт Wheel.cs к нашим колесам.
1) Выделим WheelFL перейдем на вкладку inspector.
2) Нажмем кнопку Add component>Script>Wheel.
3) Повторим пунктов 1-2 еще 3 раза к WheelFR, WheelRL, WheelRR.
На каждом колесе должна быть такая структура компонентов:
Настройки для колёс.
Основные настройки тут:
Radius: — радиус колеса, значение это надо подбирать в зависимости от размера колеса.
Suspresion Travel: — подвеска автомобиля, в прошлых частях речь шла более подробно об этом.
Dumping: — жесткость пружины.
Остальные настройки тоже очень важны, но их я думаю разберем в следующей части.
С колесами закончили.
Добавление центра тяжести и коллайдера автомобиля
Создание центра тяжести
1) Правый клик мыши по Prefabs нашего автомобиля > Create Empty.
2) Переименуем наш пустой объект с именем GameObject на СoG (сокращение center of gravity).
3) Зададим координаты в компоненте Transform объекта CoG так как на рисунках.
Примерно должно выглядеть так:
Центр тяжести примерно должен быть впереди чуть выше дна автомобиля. но в принципе для каждого автомобиля индивидуально настраивается. Всё это будет отлаживаться во время тестирования.
Создание Collider для тела автомобиля
1) Правый клик мыши по Prefabs нашего автомобиля > Create Empty
2) Переименуем наш пустой объект с именем GameObject на Collider_body
3) Добавим Box Collider компонент. (Add component>Physics>Box Collider)
4) Сделаем настройки компонентов как на рисунке. Возможно у вас будут другие настройки, смотрите как должно покрывать автомобиль Box collider.
Коллайдер нужен для создание столкновений и правильной физики автомобиля.
Создание Collider для крыши автомобиля
1) Правый клик мыши по Prefabs нашего автомобиля > Create Empty.
2) Переименуем наш пустой объект с именем GameObject на Collider_head.
3) Добавим Box Collider компонент (Add component>Physics>Box Collider).
4) Сделаем настройки компонентов как на рисунке. Возможно у вас будут другие настройки, смотрите, как должно покрывать автомобиль Box collider.
Коллайдер нужен для того, что бы, если какой то объект упадет на крышу автомобиля, что бы он взаимодействовал с крышей а не с телом автомобиля.
В общем итоге должно получится что-то вроде этого:
Конечно, можно использовать Mesh Collider, но Mesh Collider затребует больше ресурсов чем примитивные объекты. Решать вам.
Создание и настройка автомобиля
Итак, с колесами частично разобрались, настройки колес мы произведем позже, а сейчас мы займемся добавлением компонентов к нашему Prefab car.
1) Выделяем prefab автомобиля.
2) На вкладке inspector жмем кнопку Add Component>Script>Car Controller.
Добавится скрипт CarController и зависимый от него скрип Drivetrain
3) Жмем кнопку Add Component>Script>Sound Controller.
4) Жмем кнопку Add Component>Script>Anti Roll bar.
5) Повторим пункт 4.
6) Жмем кнопку Add Component>Script>Aerodynamic Resistance.
7) Жмем кнопку Add Component>Script>Traction Helper.
После того как добавили скрипты, делаем следующие настройки для наших скриптов.
Main Camera — настройки
Осталось последняя часть, сделаем настройки нашей камеры.
1) Жмем кнопку Add Component>Script>Car Camera.
Делаем следующую настройку:
Target — объект, на который будет ориентироваться камера.
Height — Высота камеры.
Distance_to_back — дистанции от объекта до камеры.
Distance_from_back — дистанции от объекта до камеры после разгона автомобиля (эффект приближения).
Естественно, все эти настройки надо настраивать под каждый автомобиль индивидуально. Описание всех настроек не приводится, т.к я еще сам разбираюсь в них, и не хотел описывать параметры в которых 100% не уверен. Однако данное руководство может быть отправной точкой для создания собственной модели автомобиля.
Источник статьи: http://habr.com/ru/post/249363/