193

Как просто рубить деревья в ue4

Многие думают, что Unreal Engine 4 сложный движок, который не осилят новички. Попробую на примере рубки деревьев показать, что это не так.

Как просто рубить деревья в ue4 Unreal Engine 4, Gamedev, Sandbox, Blueprint, Гифка, Длиннопост

Полная версия в качестве и со звуком.


На пикабу уже были посты по самым азам UE4, так что пропустим этапы скачивания, объяснения, что такое блюпринт, а также как создать персонажа и контроллер  (всё это, если честно, есть в шаблонах анреала).

Прежде всего нужно подготовить дерево, а также оружие, которым будем это дерево рубить.
В дереве ставим галочку allow CPUAccess. Такая галочка есть в любом статик меше.

Как просто рубить деревья в ue4 Unreal Engine 4, Gamedev, Sandbox, Blueprint, Гифка, Длиннопост

В топоре создаём 2 сокета, через которые будет проходить "луч смерти", разрубающий дерево.

Как просто рубить деревья в ue4 Unreal Engine 4, Gamedev, Sandbox, Blueprint, Гифка, Длиннопост

Теперь можно зайти в BP (blueprint) персонажа и создать основной custom event, который будет отвечать за рубку дерева.

Как просто рубить деревья в ue4 Unreal Engine 4, Gamedev, Sandbox, Blueprint, Гифка, Длиннопост

Cut - это эвент, который позже будем вызывать из дерева. В его Inputs нужно добавить actor Component (в него позже укажем само дерево, ибо в акторе дерева, кроме ствола, может быть ещё куча других компонентов, например, звуки, падающие листья и т.п.)

Static mesh это переменная с топором, именно из неё получаем координаты сокетов, которые создали ранее (не забудьте назначить топор в эту переменную).

Используя несложные функции движка получаем направление от одного сокета к другому и вводим всё в Slice procedural Mesh. Можно поиграться с вектором, чтобы получить оптимальный угол под себя. Например попробовать взять не Up Vector, а Forward, кроме того, можно вручную подправить его направление. Но нас вполне устроил дефолтный вариант.

Важно не забыть назначить материал на срез (в самом низу Slice procedural Mesh), на скриншоте используется бесплатная текстура из стартер контента.

Теперь переходим в актор дерева.

Как просто рубить деревья в ue4 Unreal Engine 4, Gamedev, Sandbox, Blueprint, Гифка, Длиннопост

В констракт скрипте актора дерева добавляем новый компонент procedural mesh и в его деталях отключаем  use complex as simple collision.

Далее повторяем то, что на скриншоте, при условии, что в tr назначается меш дерева.

В первом блоке анреал копирует меш дерева из статик меша в процедурный, а во втором отключаем видимость статик меша (зачем нам 2 дерева?). Также не забудьте отключить коллизию у статик меша (переменная tr).

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

Как просто рубить деревья в ue4 Unreal Engine 4, Gamedev, Sandbox, Blueprint, Гифка, Длиннопост

Осталось только вызвать эвент "Cut" из дерева, чтобы сработала функция в персонаже и дерево разрубилось.

В анреале есть система урона, в персонаже создаётся функция apply damage, а в дереве Event AnyDamage. С помощью этой системы передаётся кто бьёт, каким типом урона,  а также с какой мощностью. Боюсь в рамках этого поста рассматривать эту систему подробно будет лишним.

Главное, что из неё мы можем получить из актора дерева кто именно бьёт, и уже тогда сделать каст в контроллер персонажа и из него получить самого игрока, а значит и доступ ко всем его переменным и эвентам.

Как просто рубить деревья в ue4 Unreal Engine 4, Gamedev, Sandbox, Blueprint, Гифка, Длиннопост

Вставить этот каст нужно перед "смертью" дерева (когда его хп будет <= 0).


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

Как просто рубить деревья в ue4 Unreal Engine 4, Gamedev, Sandbox, Blueprint, Гифка, Длиннопост

Кстати, такой способ подачи импульса введён уже после записи видео/гифки вверху. В старом варианте все деревья падали примерно в одну сторону, если сделать, как на скриншоте, то деревья будут падать в противоположную от топора сторону.


В целом всё. Можно ещё поиграться с центром массы, весом, размерами коллизий и т.п., но это уже у каждого будет индивидуально.


Я понимаю, что для человека, который только сегодня установил unreal engine, данный пост может быть непонятным (особенно часть с кастом от дерева к персонажу), но поверьте, если изучить основы, то всё это можно будет повторить минут за 5-15... ну и ещё минут 30 будете играться с цифрами, подстраивая всё под свой проект :)

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"