Как сделать поворот башни танка в юнити 3д
В этом большом видео уроке мы с вами сделаем настоящую компьютерную игру с 3D танки на Unity 5 за час! В игре мы сможем передвигаться игроком, а также садиться в различные танки и ездить ими по нашей карте.
Видеоурок
Материалы для курса
Чтобы скачивать материалы к видеокурсам необходимо оформить подписку на сайт
Задание к уроку
Вашим заданием станет добавить на карту еще несколько машин (танков). Во все эти новые машины можно будет садиться и передвигаться.
Сделать это достаточно просто. Изначально вам на саму карту необходимо поместить новую машину. Теперь к этой новой машине вам надо добавить Box Collider, чтобы машина стала твердым объектом, а также добавить еще один Box Collider, но уже с галочкой Is Trigger. Теперь добавить еще два обязательных скрипта на саму машину, чтобы она двигалась и чтобы мы могли сесть в нее, а также внутрь машинки поместить камеру и место, где игрок будет создан, после выхода из машины. Вот и все!
Это можно сделать просто увеличив платформу, которая лежит внизу (земля), а также добавив новые стенки по периметру карты. Таким образом карта станет большей
Ленар Хасаншин
запись закреплена
Поворот Башни танка, вроде работает )). Я вспомнил другой метод, нужно создать пустышки, и поворачивать каждую пустышку по своей оси только. В итогом кватернионы не нужны
Ленар Хасаншин ответил Ярославу
Ярослав, скорость поворота башни есть там? нам нужно чтобы башня поворачивался плавно в заданной скоростью. У Rotation ось Y например выворачивает (на ноде Lerp), ещё поворот идёт даже на сторону большого угла. А вот на векторах всегда поворачивается в сторону маленького угла (скриншот 1), и шарниры не наблюдается.
Ленар Хасаншин ответил Кириллу
Кирилл, А вот с отдельными осями это сделать легко, башня все равно поворачивается в одной плоскости. FindLookAtRotation можно найти только для одной плоскости (указывается xy, xz или yz), а потом повернуть нужный ось с вычислениями. Главное чтобы иерархия должна быть правильном последовательности, например корпус - башня - оружие. Одна проблема, все оси должны быть направлены по умолчанию в начале (0,0,0). //немного перепутался возможно. сейчас танк сделаю, проверю
Ленар Хасаншин
Я вспомнил. У Unity так я делал всегда. Потом кватернионы начал изучать и вылетел с головы простая векторная технология))
Винокуров Анатолий Станиславович 1 , Баженов Руслан Иванович 2
1 Приамурский государственный университет имени Шолом-Алейхема, студент
2 Приамурский государственный университет имени Шолом-Алейхема, кандидат педагогических наук, доцент, заведующий кафедрой информатики и вычислительной техники
Аннотация
В статье рассматривается реализация проекта по созданию собственной игры с двумя сценами в кроссплатформенном движке Unity3D. Продемонстрирован ход построения проекта.
Vinokurov Anatoly Stanislavovich 1 , Bazhenov Ruslan Ivanovich 2
1 Sholom-Aleichem Priamursky State University, student
2 Sholom-Aleichem Priamursky State University, candidate of pedagogical sciences, associate professor, Head of the Department of Computer Science
Abstract
The article discusses the implementation of a project to create a private game with two scenes in a cross-platform game engine Unity3D. Demonstrated the progress of the build of the project.
Кроссплатформенный движок Unity3D, разработанный компанией Unity Technologies, является современным решением для создания игр и приложений для мобильных устройств, игровых приставок и персональных компьютеров. Существует возможность тестирования разрабатываемого проекта во время его создания. Одной из возможности Unity является возможность импортировать модели и анимацию практически из всех 3D приложений разработки.
Исследовательской задачей является описание проекта по созданию игры с двумя сценами в среде виртуальной реальности Unity3D .
Для начала создадим новый проект. Создадим участок земли (Terrain), зададим ему положение и размер. Добавим к созданной сцене источник освещения (Directional Light). При создании рельефа земли, предадим нашему участку форму острова и создадим в центре его небольшой вулкан, а на краю острова – крутые скалы. Внутри вулкана создадим углубление – в дальнейшем там будет располагаться небольшое озеро и именно с этого момента будет начинаться первая сцена проекта.
Добавим в наш проект небо (компонент Skybox) и воду (компонент Water Basic). Данные компоненты являются стандартными и входят в состав условно – бесплатной версии Unity3d.
Рисунок 1 – Создание нового проекта острова в Unity3D
Рисунок 2 – Создание вулкана на острове в Unity3D
Теперь добавим компонент First Person Controller для возможности взаимодействия пользователя с игровым пространством (рис 3).
Рисунок 3 – Размещение First Person Controller и других игровых объектов в Unity3D
Далее создадим анимацию движения игровых объектов (катер и самолет) и добавим в проект ветер (WindZone) (рис 4).
Рисунок 4 – Размещение игровых объектов в Unity3D
Добавим скрипт переключения анимации для движения акул таким образом, чтобы они не выплывали на сушу, но при этом реагировали на погружение игрока в воду (рис 5).
Рисунок 5 – Взаимодействие игровых объектов в Unity3D
Сохраним сцену. После чего сделаем дубликат первой сцены.
Перейдем к работе со второй сценой. При дублировании она получилась идентична первой сцене.
Удалим компонент First Person Controller со второй сцены.
Рисунок 6 – Модель танка в сцене Unity3D
Присвоим танку звук двигателя и звук взрыва снаряда для предания большей реалистичности игре.
Присвоим текстуру камуфляжа к получившемуся танку (рис. 7).
Рисунок 7 – Модель танка с привязанной текстурой, камерой и звуком
Для перехода между сценами напишем скрипт, описанный в методических разработках [13].
Перейдем к созданию врагов. Разместим на сцене несколько объектов и пропишем скрипт преследования пользователя. Скрипт был взят с сайта [14] и доработан таким образом, чтобы при попадании во врагов снарядом они уничтожались.
Зеленко Л.С., Загуменнов Д.А. Виртуальная дистанционная обучающая среда: особенности реализации и применения в учебном процессе // ученые записки ИСГЗ. 2013. №1 (11). С. 302-305.
Зеленко Л.С., Загуменнов Д.А., Зинченко А.О. Основы построения виртуальной информационно-образовательной среды // Вестник Самарского Государственного Аэрокосмического Университета им. академика С.П. Королева (Национального Исследовательского Университета). 2012. №7 (38). С. 46-53.
Галкин Н.С., Ромин Е.А. Создание трехмерной модели местности в Unity3d // Инновационные технологии: теория, инструменты, практика. 2014. №1. С. 311-316.
Ходос О.С., Баженов Р.И. Обучение трехмерному моделированию в UNITY3D // Современные научные исследования и инновации. 2014. № 6-3 (38). С. 14.
Ходос О.С. Формирование предметной компетентности у студентов в контексте среды виртуальной реальности // Вестник бурятского государственного университета. 2014. №1 (2). С. 82-86.
Якобсон М.Е., Гринберг Г.М. Использование мультиплатформенной среды Unity для визуализации учебных материалов // Актуальные проблемы авиации и космонавтики. 2010. №6 (2). С. 437-438.
Bergera M., Cristie V. CFD Post-processing in Unity3D // Procedia Computer Science. 2015. №51. С. 2913–2922.
Becker-Asanoa C., Ruzzolia F., Hölscherb C., Nebel B. A Multi-agent System based on Unity 4 for Virtual Perception and Wayfinding // Transportation Research Procedia. 2014. №2. С. 452–455.
Wang J., Lindeman R. Coordinated hybrid virtual environments: Seamless interaction contexts for effective virtual reality // Computers & Graphics. 2015. №48. С. 71–83.
Richards D., Taylor M. A Comparison of learning gains when using a 2D simulation tool versus a 3D virtual world: An experiment to find the right representation involving the Marginal Value Theorem // Computers & Education. 2015. №56. С. 157–171.
Ходос О.С. Основы трехмерного моделирования в Unity3D. Методические указания к выполнению лабораторных работ по направлениям 230400 – Информационные системы и технологии, 230700 – Прикладная информатика / О.С. Ходос, Р.И. Баженов. – Биробиджан: Изд-во ПГУ им Шолом-Алейхема, 2013. – 101 с.
© Если вы обнаружили нарушение авторских или смежных прав, пожалуйста, незамедлительно сообщите нам об этом по электронной почте или через форму обратной связи.
Связь с автором (комментарии/рецензии к статье)
Оставить комментарий
Вы должны авторизоваться, чтобы оставить комментарий.
Для ограничения поворота камеры в Untiy 3D мы воспользуемся математическим модулем Matf. Для начала получим данные о вращении в виде переменной с типом Vector3:
Vector3 rot = transform.eulerAngles;
Далее рассмотрим, какую именно ось вращения нужно изменить. Я выбрал ось X, она не возволит игроку смотреть слишком вертикально вверх. Иксовую составляющую переменной вращения мы и будем ограничивать.
rot.x = Mathf.Clamp(rot.x, -80f, 80f);
Mathf.Clamp ограничивает данное значение между -80 и 80 градусов. Вы можете поменять эту строку, чтобы изменить минимальный и максимальный градусы поворота.
Теперь присвоим вращению камеры новое значение переменной:
Готово! Теперь камера не сможет слишком сильно быть повернутой вверх или вниз.
Читайте также: