Unreal Engine 5 и VR с нуля. Часть 6. Разрабатываем Дартс. Осваиваем Post Process Volume. Разбираемся с Grab Component. Настраиваем анимацию.

Введение

Продолжаем разрабатывать игру Дартс по курсу "Oculus VR Production for Unreal Engine". В этой статье я расскажу, какие проблемы я встретил при прохождении курса, и как я решал эти проблемы. В данный момент, я прошел 24 урока из плейлиста.

Update 02.08.2024 - курс был перезалит на Rutube

1 Проблема. Исправляем яркий свет на уровне

После импорта ассетов и уровня, на карте был замечен слишком яркий свет.

Unreal Engine 5 и VR с нуля. Часть 6. Разрабатываем Дартс. Осваиваем Post Process Volume. Разбираемся с Grab Component. Настраиваем анимацию.

Решение проблемы нашлось на форуме:

Далее я решил найти более подробную информацию о Post Process Volume. Документация:

Несколько видео на эту тему, которые мне помогли углубиться в свойства и функции Post Process Volume:

Ссылка на оригинальное видео - Unreal Engine 5 Beginner Tutorial - UE5 Starter Course!:

и еще одно видео:

Для своей сцены, я почти все эффекты выключил.

2 Проблема. Разбираемся с системой захвата предметов (UE5). Дротик не крепился к socket руки. (Решено)

В Unreal Engine 5 используется grab component, который мы должны применять к предметам, с которыми хотим взаимодействовать.

В видеоуроке 22, нашего плейлиста, мы настраиваем взаимодействие с дротиком. Как я понял, в UE4 прописывали логику захвата к каждому bp_actor отдельно. Но в UE5 мы применяем ко всему grab component из VR шаблона.

Разобраться с применением grab component мне помогли следующее видео:

В конечном итоге, при такой схеме блюпринта, дротик стал нормально браться/бросаться как в видеоуроке:

Unreal Engine 5 и VR с нуля. Часть 6. Разрабатываем Дартс. Осваиваем Post Process Volume. Разбираемся с Grab Component. Настраиваем анимацию.

Если вы как я, используете плавное передвижение из статьи 4. То переключите коллизию всех компонентов BP_Dart на VRInteractable (в том числе и для сферы коллизий).

Unreal Engine 5 и VR с нуля. Часть 6. Разрабатываем Дартс. Осваиваем Post Process Volume. Разбираемся с Grab Component. Настраиваем анимацию.

Для того чтобы дротик крепился к socket руки, необходимо убрать галочку на значении Weld Simulated Bodies.

3 Проблема. Нет готовой анимации захвата дротика. Пересоздаем анимацию захвата дротика. (решено)

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

Unreal Engine 5 и VR с нуля. Часть 6. Разрабатываем Дартс. Осваиваем Post Process Volume. Разбираемся с Grab Component. Настраиваем анимацию.

Сделал дубликат одной из анимации. Выправил кости руки как мне нравится и нажал "Key". Анимация сохранилась как новая. Так я сделал аналоги анимации из урока.

Unreal Engine 5 и VR с нуля. Часть 6. Разрабатываем Дартс. Осваиваем Post Process Volume. Разбираемся с Grab Component. Настраиваем анимацию.

4 Проблема. Не менялась анимация на взятый дротик по булевому значению Holding Dart Anim. (Решено)

В Unreal Engine 4 нет grab component, и как я понял, логика захвата рукой любого Actor осуществляется в персонаже.

Мне нужно было понять, как определить момент захвата и как передать изменение анимации руки именно при захвате дротика, используя в базовый VR шаблон Unreal Engine 5. Конкретного решения проблемы в разных видео я не нашел. Люди в основном используют State Machines для работы с анимацией в различных ситуациях в игре, но тогда бы мне пришлось полностью переделать логику анимации в игре.

Я планирую в будущем изучить работу State Machines, но не для взаимодействия с одним дротиком.

Я добавил еще одно значение для моего BP_Dart в GrabType Enumeration:

Unreal Engine 5 и VR с нуля. Часть 6. Разрабатываем Дартс. Осваиваем Post Process Volume. Разбираемся с Grab Component. Настраиваем анимацию.

Добавил логику в функцию "GetGrabComponentNearMotionController" в зависимости от значения type Grab Component присвоенному для моего Actor, а так же передал в переменную Holding Dart Anim Character (Храним в переменной событие с измененной анимацией, если персонаж держит правой руке actor с GrabType = Dart)

Unreal Engine 5 и VR с нуля. Часть 6. Разрабатываем Дартс. Осваиваем Post Process Volume. Разбираемся с Grab Component. Настраиваем анимацию.

Теперь, мой VR Character меняет анимацию в зависимости от того в руках BP_Dart или нет:

Unreal Engine 5 и VR с нуля. Часть 6. Разрабатываем Дартс. Осваиваем Post Process Volume. Разбираемся с Grab Component. Настраиваем анимацию.

Так же добавил изменение анимации в зависимости от местоположения дротика от камеры(головы) персонажа(симуляция размаха). Правда в уроке по Unreal Engine 4 это всё происходит в одном месте. Тут пришлось адаптировать под VR шаблон Unreal Engine 5:

Unreal Engine 5 и VR с нуля. Часть 6. Разрабатываем Дартс. Осваиваем Post Process Volume. Разбираемся с Grab Component. Настраиваем анимацию.

Проблема 5. Ошибка "GrabComponent->SetSimulatingParent->Cast To PrimitiveComponent FAILED" при захвате дротика (Решено)

При захвате дротика я каждый раз получаю ошибку "GrabComponent->SetSimulatingParent->Cast To PrimitiveComponent FAILED".

Я нашел место где это происходит:

Unreal Engine 5 и VR с нуля. Часть 6. Разрабатываем Дартс. Осваиваем Post Process Volume. Разбираемся с Grab Component. Настраиваем анимацию.

Вероятно, это из-за того, что в моём BP_Dart присутствует DefaultSceneRoot component(видимо он не является примитивным компонентом), но это не точно.

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

Unreal Engine 5 и VR с нуля. Часть 6. Разрабатываем Дартс. Осваиваем Post Process Volume. Разбираемся с Grab Component. Настраиваем анимацию.

Update 23.07.2024

BP_Dart не является примитивным компонентом и не должен. А симуляция физики у него внутри логики.

Проблема 6. При переносе всех компонентов персонажа (VRPawnDarts) в родительского Персонажа (BPP_Pawn_Darts) и переназначении их в логике. При старте сцены создаются оба персонажа на сцене. (Решено)

В уроке 24 мы переносим все компоненты к родительского персонажа. Я все это сделал по аналогии, но при запуске сцены у меня создаются оба персонажа.

Unreal Engine 5 и VR с нуля. Часть 6. Разрабатываем Дартс. Осваиваем Post Process Volume. Разбираемся с Grab Component. Настраиваем анимацию.

Есть пара идей как это пофиксить, допишу в эту статью если будет решение проблемы.

Update 23.07.2024

По моей ошибке, в Настройках класса GameMode_Darts в Default Pawn Class должен стоять Character, а у меня был указан BPP_Pawn_Darts. Поэтому он создавал экземпляр родительского персонажа на карте.

Unreal Engine 5 и VR с нуля. Часть 6. Разрабатываем Дартс. Осваиваем Post Process Volume. Разбираемся с Grab Component. Настраиваем анимацию.

Заключение

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

Это позволяет глубже изучить работу с Unreal Engine 5, а так же сподвигло на прохождение еще одного курса(параллельно), по изучению основ работы с Blueprint. (да, он для Unreal Engine 4, но основные функции одинаковые)

Курс по Blueprint [RUS]

Телеграм канал Unreal Engine VR

77
2 комментария

Спасибо за пост и потраченное время!
Действительно нужные вещи.

1
Ответить

Спасибо за поддержку)

1
Ответить