реклама
разместить

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

реклама
разместить
1 комментарий

Умение решать такие задачи поможет лучше разобраться в движке и повысить качество работы

1
Создал город из игры Герои 3 в 3D | Фабрика
Создал город из игры Герои 3 в 3D | Фабрика
44
Стоит ли учиться брендингу у агентств? Отзыв на курс BRAND DESIGN INSIDER от ENDY

Мой 2024 закончился брендинговым курсом от ENDY. Выбор именно этого курса , а не любого другого аналогичного обусловлен тремя причинами: 1) брендинг — потому что это пазл, которого мне недоставало, чтобы стать лучше; 2) агентство а не школа или фрилансер — потому что моей целью было систематизировать рабочий процесс, без обещаний освоения новой про…

33
42 миллиарда за стиль Бакальчука: как Wildberries поссорилась сама с собой и что это значит для всех нас
42 миллиарда за стиль Бакальчука: как Wildberries поссорилась сама с собой и что это значит для всех нас
Решение проблемы управления эмуляцией в EmulatorJS с помощью iframe в Nuxt.js
Решение проблемы управления эмуляцией в EmulatorJS с помощью iframe в Nuxt.js
Как мы обучаем топ-менеджеров РЖД управлять эффективностью в Unity-симуляторе

Считается, что топ-менеджеров надо учить серьёзно. А мы вовлекли их в игровое обучение, сделав симулятор галактической транспортной империи. Рассказываю, как нам это удалось.

11
Обзор Meta Quest Oculus 3 от новичка новичкам

Первый опыт виртуальной реальности был испытан в клубах на больших площадках года 2 назад. Наверное был там второй Quest. Особо впечатлился тогда игрой типа Counter Strike с боями 5 игроков против 5. За 2.5 часа пролил несколько потов, бегая по небольшому спортзалу. Но графика игры и точность движений не впечатлила. В этих клубах жёсткий набор игр…

Дизайн-проект квартиры в ЖК «Событие» в Москве: интерьер с деревянными акцентами

Дизайн-проект квартиры в ЖК «Событие» в Москве разработан для современной семьи с учётом динамичного городского ритма. Архитектура пространства построена на сочетании функциональных решений и выразительных деталей, передающих индивидуальность жильцов. Основной концепт — современная классика с лаконичной эстетикой: светлая основа, подчеркнутая выдел…

Дизайн интерьера квартиры в ЖК «Событие», спальня с гардеробной от студии Artum.
Мой путь в дизайн: от первых шагов в Figma до коммерческих проектов

Как я пришел в дизайн

Почему ожидания от VR не совпадают с реальностью?
Почему ожидания от VR не совпадают с реальностью?
реклама
разместить
Ускоряем разработку игр в соло

Советы, которые я тут собрал будут полезны в первую очередь тем, кто делает игры в одиночку или командой до 3 человек. Ведь если в команде достаточно людей, то прибегать к полумерам может быть во вред проекту.

11
От теории к практике: Как я создал свою первую модель в Blender за 30 часов
От теории к практике: Как я создал свою первую модель в Blender за 30 часов
Игры, которые учат

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

22
[]