Создание персонажа для тестирования и работы с VR без шлема

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
Автор статьи: Ростислав Мусиенко

Senior Unreal Engine Developer в District Zero

Эта статья может быть полезна тем кто хочет попробовать создать механики для VR но у него еще нет шлема, или если у вас уже раскалывается голова от постоянного тестирования вашего продукта.
Именно такая проблема и побудила меня задуматься в этом направлении

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

Моей целью является показать основную логику, и для каждого проекта в зависимости от используемых персонажей VR и их логики, многие этапы могут отличаться.


Начнем с создания сцены VR Template

Далее в папках создадим нового Character который станет нашим подопытным

В каждом VR персонаже должны находится следующие компоненты:

  • Scene - для создания единой привязки и точки в пространстве к которой привязана камера и контроллеры.

  • Camera - для вывода картинки на экран игрока
    Motion Controllers - является компонентом с помощью которого считываются и передаются данные контроллеров в пространстве.

В контроллерах мы можем временно выбрать то как они будут выглядеть а также настроить левую или правую руку.

На данный момент наш персонаж выглядит так

Для того чтобы не переписывать все управление, мы можем просто его перенести скопировав функции из дефолтного персонажа VR.

Это можно сделать просто выбрав функцию и нажав Ctrl+C, далее открыть нашего персонажа, нажать на пространство функций и далее Ctrl+V. Таким образом перенесется не только корректное название но и все соединения внутри функции

После того как удасться все корректно скопировать нам потребуется инициализировать переменные, так как многие не созданы в нашем персонаже

Для их создания нажимаем правой кнопкой мыши на переменную с ошибкой (если еще нет ошибки эти переменные выглядят немного прозрачными) далее выбираем команду Create Variable

Повторяем аналогично со всеми.

Когда все переменные в функциях созданы, нам снова требуется вернуться в персонажа VR, и на этот раз скопировать его код для управления.
Это требуется для того, чтобы в будущем мы могли управлять им не только с десктопа, но и с VR если он будет подключен.

Копируем и вставляем код, после чего могут вылезти ошибки о том что некоторых переменных не существует, создаем и их.

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

Не стоит забывать и о некоторых данных в наших переменных.
Например SnapTrunDegress и GrabRadiusFromGripPosition должны иметь следующие значения:

На этом этапе мы имеем персонажа с полностью перенесенной логикой в VR, но он все еще не умеет ходить, как это решить??

Добавляем новый темплейт к нашему проекту.

На этот раз нам потребуется First Person

После его добавления, мы можем дописать логику персонажа.
При старте у нас проводится проверка которая решает является ли наш персонаж VR, мы используем эту часть логики, и на False добавить Add MappingContext

Куда добавим управление вашим персонажем от 1 лица.

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

Также для корректной работы камеры не забываем о UsePawnControllRotation, он должен быть True.

Для того чтобы контроллеры следовали за положением камеры создаем ноду Attach Component to Component и с ее помощью связываем оба контроллера.

Мы выбрали именно такой способ для того чтобы мы всегда могли свободно запускать нашего персонажа в VR и не появлялись проблемы от логики созданной исключительно для десктоп формата.

Для проверки персонажа выставив его на сцену в меню Details выбираем следующие значения.
Это нужно для возможности управлять персонажем (но знакомые с движком это наверняка уже знают).

На данный момент наш персонаж должен уметь носиться по сцене, но еще не умеет брать предметы.

Исправляем.

Возвращаемся к логике и связываем конец после Attach с логикой в которой подключается управление для персонажа VR:

После чего открываем контент, и выбираем IMC_Default нашего VR персонажа: 

В нем потребуется дописать инпуты определенных действий:

В телепортацию добавим Shift.

В поднятие предметов левую и правую кнопки мыши соответственно в зависимости от левой или правой руки.

Проверяем что получилось.

Мы можем поднимать предметы через десктоп персонажа, уже круто, но идем дальше.

Теперь нам потребуется настроить взаимодействие с оружием или другими предметами

Для этого открываем IMC_Weapon:

Для левой руки я предпочитаю использовать клавишу Q а для правой E
Клавиши мыши уже заняты тем что мы держим предмет поэтому не можем их использовать.
Да это может быть неудобно но что поделать если это создается для тестирвоания.

Одним из важных этапов, является ротация контроллеров для объектов, которые берутся в определенное положение относительно их:

Проверяем стрельбу, все работает отлично!!

Один из старейших и крайне популярных жанров компьютерных игр - шутеры. Приглашаю вас на бесплатный урок, где используя Unreal Engine 5 реализуем механику стрельбы. Реализуем взаимодействие C++, Blueprints, LineTrace и многое другое... Рассмотрим практические кейсы и различные подходы.

  • Зарегистрироваться на бесплатный урок

Источник: https://habr.com/ru/company/otus/blog/723874/


Интересные статьи

Интересные статьи

В этой статье я поделюсь своим опытом создания Telegram Bot-а для автоматизации тестирования.
Одной из новых функций, анонсированных на WWDC в этом году, стал Live Text. Она позволяет пользователям выбирать, переводить и искать текст в любом изображении. На демонстрации во время основного докл...
Если вы пользуетесь Linux с ранних дней появления этой ОС (или если, вроде меня, начинали с Unix), то вам не надо очень быстро и в больших количествах изучать то новое, что появляется в с...
Перевод подготовлен специально для будущих студентов курса "Разработчик на Spring Framework".Эта статья о динамическом создании бинов за пять лет стала самой популярной в...
Большинство тех, кто начинает изучать программирование, начали это из-за желания сделать свою игру. Нууу… я не исключение, но судьба меня занесла в веб разработку. Ч...