Как сделать поворот башни танка в юнити 3д

Добавил пользователь Евгений Кузнецов
Обновлено: 05.10.2024

В этом большом видео уроке мы с вами сделаем настоящую компьютерную игру с 3D танки на Unity 5 за час! В игре мы сможем передвигаться игроком, а также садиться в различные танки и ездить ими по нашей карте.

Видеоурок

Материалы для курса

Чтобы скачивать материалы к видеокурсам необходимо оформить подписку на сайт

Задание к уроку

Вашим заданием станет добавить на карту еще несколько машин (танков). Во все эти новые машины можно будет садиться и передвигаться.

Сделать это достаточно просто. Изначально вам на саму карту необходимо поместить новую машину. Теперь к этой новой машине вам надо добавить Box Collider, чтобы машина стала твердым объектом, а также добавить еще один Box Collider, но уже с галочкой Is Trigger. Теперь добавить еще два обязательных скрипта на саму машину, чтобы она двигалась и чтобы мы могли сесть в нее, а также внутрь машинки поместить камеру и место, где игрок будет создан, после выхода из машины. Вот и все!

Это можно сделать просто увеличив платформу, которая лежит внизу (земля), а также добавив новые стенки по периметру карты. Таким образом карта станет большей

Unreal Engine 4 (UE4) Уроки, форум, документация

Ленар Хасаншин

Ленар Хасаншин
запись закреплена

Поворот Башни танка, вроде работает )). Я вспомнил другой метод, нужно создать пустышки, и поворачивать каждую пустышку по своей оси только. В итогом кватернионы не нужны

Кирилл Молчанов

Ярослав Сафронов

Ленар Хасаншин


Ленар Хасаншин ответил Ярославу

Ярослав, скорость поворота башни есть там? нам нужно чтобы башня поворачивался плавно в заданной скоростью. У 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 градусов. Вы можете поменять эту строку, чтобы изменить минимальный и максимальный градусы поворота.

Теперь присвоим вращению камеры новое значение переменной:

Готово! Теперь камера не сможет слишком сильно быть повернутой вверх или вниз.

Читайте также: