Как сделать танк в юнити

admin

Unity 3d Tank Tutorial: Ходовая часть (Урок 2. Гусеничное шасси)

Перейдите на сам объект tank, как видите помимо прикрепленного только что скрипта там есть объект Animation, смело можете его удалить он там ни к чему.
7d8c9184a181d169f905d604be66d460

Далее создайте префаб объекта с WheelCollider’ом (вспоминаем п.2 предыдущего урока), я назвал его tank_collider, параметры у него будут следующие.
a2a1a77450389cad5a76eb3073522089

Начинаем перетаскивать объекты в наш скрипт, первым делом можете перетащить только что созданный префаб на поле Wheel Collider внутри нашего скрипта. Далее перетащите гусеницы (они называются Track_line_left и Track_line_right) на поля Left Track и Right Track. Затем верхние колеса (Upper_wheel[номер]_left, Upper_wheel[номер]_right), в массивы Left Track Upper Wheels и Right Track Upper Wheels. Ну с остальными колесами и костями я думаю сами разберетесь (колеса называются rowheel_[номер]_right и rowheel_[номер]_left, а кости Suspension_bone[номер]_left и Suspension_bone[номер]_right), главное чтобы все колеса и кости были переданы в одинаковом порядке, для того чтобы это было легче сделать я их специально пронумеровал, и еще не трогайте кости которые называются Chain_bone[номер]_left и Chain_bone[номер]_right, к ним привязана статичная часть гусеницы.

Вот как все это в конце концов должно выглядеть:
bddc64b20358d4d6afdf226d67f66a0d

Далее, выберите объект tank и добавьте к нему Rigidbody со следующими параметрами:
faccb11a6c28d989ff82b9f66461acb6

3. Устанавливаем Wheel Collider’ы и параметры колес

Итак теперь наши переменные объявлены и проинициализированы, двигаемся дальше, и начнем с сохранения параметров колес в массивах WheelData[] leftTrackWheelData и WheelData[] rightTrackWheelData. Будем это делать внутри функции Awake() и объявим вспомогательную функцию WheelData SetupWheels(), которая как вы можете видеть должна вернуть значение типа WheelData, перед этим выполнив все операции с ним. Все это выглядит следующим образом:

4. «Оживляем» колеса и гусеницу

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

5. Учимся ездить

Какая наверное самая главная особенность движения гусеничного транспорта которая отличает его от обычного автомобиля? Я считаю что это поворот на месте. Не верите? Смотрите. Будь у обычного автомобиля возможность разворачиваться на месте глядишь блондинки выезжающие со стоянки не так часто врезались бы в автомобиль стоящий перед ними.

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

Я предлагаю начать с самого простого и для начала научить наш танк поворачивать на месте. Тут казалось бы все понятно. И мы можем сделать так:

На самом деле здесь дело не в силе крутящего момента, её более чем достаточно для поворота танка. Давайте вернемся к истокам, тоесть к нашему префабу tank_collider настройки которого у нас наследуются для всех WheelCollider’ов танка. Обратите внимание на поле Sideways Friction, в предыдущем уроке я упомянул об этой настройке, я говорил что это «боковая» сила трения колеса, и она полезна если мы хотим реализовать дрифт. Сейчас эта самая сила трения которая действует на наши коллайдеры с боковых сторон неимоверно большая, крутящий момент колес не в силах её преодолеть, поэтому наш танк не поворачивается. Теперь обратите внимание на переменную Stiffness Factor внутри Sideways Friction, она та нам и нужна, по сути это число на которое умножается боковая сила трения, ставьте его в ноль, нажимайте Play.
a5974c036cfe867294bf2fa74d6438b6

О чудо наш танк сошел с ума и теперь может крутиться со скоростью волчка, да еще и ездить боком, все правильно, теперь бокового трения нету совсем. Теперь выйдите из Play mode, поставьте значение в 0.06 и снова нажмите Play. Ну наконец то, теперь наш танк поворачивается вокруг своей оси и вполне адекватно. Выходите из Play mode и установите значение Sideways Friction обратно в 1. Конечно все это хорошо менять значение прямо из префаба, но лучше это делать из скрипта, потомучто когда боковое трение не управляемо есть шанс что наш танк будет входить в самый настоящий дрифт. Заодно научим танк ехать вперед и поворачивать во время движения. Модифицируем функцию CalculateMotorForce() и объявим еще маленько глобальных переменных:

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

Источник

Unity3d Tank Tutorial: Ходовая часть (Урок 1. Основы механики транспортного средства)

a6e94ec81fd5264001ac051a1efa853f

Вступление

Итак вы уже не новички в Unity, вы умеете создавать сцену, расставлять объекты на сцене, создавать terrain, делать префабы и тд… и главное — работать со скриптами, либо вы уже изучили статьи: Unity3D для начинающих — Туториал 1 и Unity3d script basics. Все эти знания вам пригодятся ведь в этом уроке мы двинемся намного дальше.

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

Собственно то что вы видите на изображении сверху (это будет результат данного урока) вы можете опробовать «вживую» прямо в браузере. Хотите сделать это сами? Тогда добро пожаловать под кат

Перед тем как начать рассказывать об основах моделирования механики автомобиля на Unity я не могу не отметить что на официальном сайте уже есть уроки на эту тему например здесь. Правда на протяжении всего этого даются лишь указания на то, какой скрипт прикрепить к какому объекту и лишь изредка объясняют чтонибудь полезное, в третьей части урока наконец то объясняют как работает главный скрипт, хотя по моему это надо было делать в самой первой части, и начинать объяснять с того момента как работают wheel collider’ы и как они взаимодействуют с rigidbody, в итоге я сделал вывод что данный урок не рассчитан на новичков в Unity и хочу это исправить.

Но если вы уже знаете что такое Wheel Collider и с чем его едят, то вы можете пропустить этот урок.

1. Создаем «Автомобиль»

Для начала проделайте стандартные процедуры, создайте сцену, создайте terrain, либо используйте уже готовые, затем создайте пустой Game Object(GO), (GameObject->Create Empty), назовем его какнибудь оригинально, например Car.

6cd69d6997b5ed4d94e9152ef06a0d79

Итак, наш суперкар почти готов! Поднимите его немного над поверхностью terrain’а и нажмите Play, автомобиль упадет на землю и встанет колом на колеса, о мягкой подвеске ему еще только мечтать, выходите из Play mode. Как видите у наших колес имеется компонент под названием Capsule Collider, а у кузова Box Collider, я не буду рассказывать в этом уроке что такое коллизии и как на основе них рассчитать положение объекта в пространстве, объясню проще: если у объекта имеется какой – либо из простых collider’ов (Box, Capsule, Mesh,…) то этот объект может взаимодействовать с другими объектами содержащими Rigidbody и один или несколько collider’ов, в свою очередь объект содержащий Rigidbody будет вычислять свою позицию на основе столкновений всех подчиненных ему collider’ов и назначенных им физических материалов.

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

А пока что выберите каждое из наших колес и удалите у них Capsule Collider (Правой кнопкой по нему и Remove Component). Нажмите Play, теперь автомобиль больше не стоит на колесах, они прошли сквозь террейн и взаимодействует с поверхностью у нас теперь только кузов.

2. Добавляем Wheel Colliders

8a4bfd1f42963602b7371280b373f135

Нажмите Play, автомобиль упадет и опять встанет на колеса (кстати если колеса все равно проходят сквозь террейн, это значит что автомобиль падает на землю с очень большой скоростью, и вам просто напросто нужно уменьшить расстояние до земли, либо увеличите параметр Drag у Rigidbody). Как видите результат не сильно отличается от того где у нас на колёсах стояли Capsule Colliders, все правильно, потому, что мы не задали нашим Wheel Collider’ам никаких параметров.

Итак, нажмите Play сейчас, посмотрите, наш автомобиль ведет себя теперь совсем по другому, теперь он пружинит от поверхности террейна, а если вы поставите его на склон какой нибудь горки, он покатится с неё, вот так у нас работают Wheel Collider’ы.

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

3. Управляем Wheel Collider’ами

В этом уроке я буду писать скрипты на C#, простите меня JavaScript’еры, он мне привычнее, я думаю вы разберетесь.

Далее работаем с нашими коллайдерами, дополняем скрипт:

Теперь можете нажать Play, и используя кнопки W,S или стрелки вперед — назад, привести в движение нашу «формулу один», а кнопками A,D, или стрелками влево – вправо, поворачивать.

Давайте обо всем по порядку.

4. Центр тяжести

Задается он удивительно просто, во первых нам надо создать пустой GO, назовем его Center of mass, затем перетянуть его на объект Car, и разместить его приблизительно там где вы считаете он должен быть, например чтобы моё авто не переворачивалось при повороте на высокой скорости мне пришлось сделать его вот так:

2636e6c9874da6fb6f2f7e18e84f4a38

d212e12a609c007e739f94d9a9097937

5. «Оживляем» колеса

Ну вот мы и добрались до финальной, на мой взгляд самой интересной в этом уроке и в то же время довольно сложной темы.

Для того чтобы оживить колесо, нам необходимо вычислять позицию и угол его вращения в каждом фиксированном кадре, в этом нам опять поможет чудесный WheelCollider, его метод GetGroundHit(), который способен вернуть структуру WheelHit в которой в свою очередь содержится точка соприкосновения коллайдера и террейна (переменная point). Благодаря методу GetGroundHit() мы можем вычислить позицию колеса на основе движения пружины подвески. Ну а что касается угла поворота – это совсем просто, в WheelCollider’е есть float переменная rpm, это аббревиатура от rotation per minute, на её основе мы и можем определить угол вращения колеса.

Переходим собственно к скрипту, он вырос, потолстел и теперь выглядит так:

Скопируйте его, вставьте в свой скрипт, затем во вкладке hierarchy выберите наш объект Car, как вы можете видеть в инспекторе у нас появились новые переменные и массивы в скрипте, в массивы wheelsF и wheelsB необходимо передать передние и задние колеса соответственно, (колеса а не Wheel Collier’ы!) как сделаете это нажмите Play. Если колеса уходят под террейн то поменяйте значение переменной wheelRadius, оно должно примерно совпадать с радиусом ваших коллайдеров.

Итак должно произойти чудо, ваши колеса теперь будут вращаться и реагировать на неровности ландшафта прям как настоящие.

fde484cd46d52ec3914955856bed5a7a

Заключение

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

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

Источник

Как сделать танк в юнити

Я не так давно начал изучать C# и Unity5. Решил попрактиковаться на создании игры танчики в 2D и 3D. Буду делиться в этой теме своими победами.

У меня будет, например, ветка клона оригинального «Battle City» и версии на базе этой игры, где можно проявить фантазию. Смело предлагайте идеи!

То есть для меня это практика освоения API движка и его инструментов через разработку простых игр. Я хочу в будущем в 3D версии сделать: огонь, дым, разлетание кирпичей по физическим законам и т.д. на что фантазии хватит и насколько отработаю навыки работы с движком до автоматизма.

Потом сделаю их рандомное перемещение и стрельбу, чтобы они были опасные и их нужно было успокоить. В этом и будет цель играбельной демки.

Вопрос есть с камерой в 3D версии. Мне знакомый посоветовал сделать камеру, которая будет приближаться и отдаляться с помощью колёсика мышки, чтобы не упустить врага и не пропустить бонус. Пользователь сможет менять наклон, то есть обзор камеры с помощью правой кнопки мыши (или нажатого колёсика). Я ещё с колёсиком не работал.

Пока что игровые объекты будут состоять из простых стандартных объектов: цилиндры, кубики и т.д. А потом я научусь делать танчики в 3D редакторе Blender и простые тектуры буду рисовать в GIMP’е. Нужно ещё научиться делать развёртки для текстур, рисовать на них в GIMP’е, чтобы в Blender’е накладывать тектуры. Правильно же я понимаю? Объекты можно экспортировать из Blender в разные форматы, а потом импортировать в Unity простым drag and drop.

Если что-то буду забывать, вы мне напоминайте. Ну я, конечно, буду перечитывать и свои сообщения, чтобы ничего не забыть.

Ага, ждем опасных танчиков.

Хм, а сможете сделать на юнити 1 в 1 версию с Денди?

А почему нет? В Unity есть все необходимые инструменты для создания 2D игр любого жанра. Есть физика для 2D. Разработчики Unity используют физический движок Box2D. Сейчас в основном на этом движке и делают 2D игры для мобильных и браузеров. В платной Pro версии Unity заставку, что «сделано в Unity» можно отключить. Это один из самых популярных движков, как для 2D, так и для 2D. Причём изначально он был популярен именно в 2D, благодаря своим удобным инструментам и бесплатности. В этом году все платные инструменты из Pro версии перешли в бесплатную «Personal Edition» версию. Это можно в википедии подробно прочитать.

Хотя, в данном случае, в танчиках 2D физика не нужна. Там нужно использовать физику в режиме «триггер». Я нашёл проект, где человек использует физику не в режиме «триггер», поэтому можно двигать врагов, что запрещено в оригинальной игре. Он недавно начал делать игру. Я собрал его проект в exe: seamanmur-battle-city.zip. Исходники его проекта я взял здесь.

Помимо этого, сделать свои играбельные версии, чтобы отрабатывать навыки использования возможностей движка в 2D играх. То есть дать волю фантазии в танчиках 2D. В планах ещё Марио и леталка, типа Галактики.

Источник

как сделать в юнити танк (типо)

Для просмотра онлайн кликните на видео ⤵

p.gif.pagespeed.ce.OtewWF3wpz

Разработка танка [Unity3d] Подробнее

p.gif.pagespeed.ce.OtewWF3wpz

p.gif.pagespeed.ce.OtewWF3wpz

#2. Создание мультиплеерной игры Танки, Unity3D. Урок 2. Помещаем модели из MagicaVoxel в Unity3D Подробнее

p.gif.pagespeed.ce.OtewWF3wpz

#3. Создание мультиплеерной игры Танки, Unity3D. Урок 3. Задаем движение и вращение Танка Подробнее

p.gif.pagespeed.ce.OtewWF3wpz

8) Описываем функцию выстрела танка из пушки в Unity3D Подробнее

p.gif.pagespeed.ce.OtewWF3wpz

ВидеоУрок по созданию модов в Panzer War.Unity.На русском языке Подробнее

p.gif.pagespeed.ce.OtewWF3wpz

Как создать игру car driving с мультиплеером и с cybertrack 1ч Подробнее

p.gif.pagespeed.ce.OtewWF3wpz

КАК СДЕЛАТЬ АНИМАЦИЮ ГУСЕНИЦ В UNITY5! Подробнее

p.gif.pagespeed.ce.OtewWF3wpz

#1. Создание мультиплеерной игры Танки, Unity3D. Урок 1. Создание моделей в MagicaVoxel Подробнее

p.gif.pagespeed.ce.OtewWF3wpz

Физическое перемещение танка на Юнити | СТРИМ Подробнее

p.gif.pagespeed.ce.OtewWF3wpz

Как сделать конструктор танков в Unity3d? Подробнее

p.gif.pagespeed.ce.OtewWF3wpz

Уроки Unity Где брать модели для Unity, импортируем их в проект Подробнее

p.gif.pagespeed.ce.OtewWF3wpz

Уроки Unity / Как добавить персонажа (бегает и прыгает) Подробнее

p.gif.pagespeed.ce.OtewWF3wpz

p.gif.pagespeed.ce.OtewWF3wpz

Как сделать стрельбу в 2D платформере? Подробнее

p.gif.pagespeed.ce.OtewWF3wpz

🔊 Всё про звук в Unity3D [Tutorial] Подробнее

p.gif.pagespeed.ce.OtewWF3wpz

Создание 3D гонок на Unity 5 за 30 минут! Подробнее

p.gif.pagespeed.ce.OtewWF3wpz

🌀Стрим по Unity.🌀 Продолжае делать танки!) Подробнее

p.gif.pagespeed.ce.OtewWF3wpz

Как сделать показатель жизни у врага? Подробнее

Источник