Unreal Engine 4 — как устроенна навигация в NavMeshBoundsVolume

в 16:04, , рубрики: Unreal Engine, Программирование, разработка игр

Всем доброго времени суток. Меня зовут Александр Сироткин сейчас моя задача овладеть всеми тонкостями программирования на игровом движке Unreal Engine 4.

Возникла задача написать NPC или ИИ и при этом соответственно, каждый персонаж должен передвигаться на своей собственной территории в случайную точку. Конечно идей реализации масса, можно устанавливать TargetPoint вокруг него брать радиус, сравнивать координаты случайной точки с данным радиусом. Но нет, меня именно заинтересовала тема навигации по NavMeshBoundsVolume. Во первых если во вкладке Show включить Navigation то мы наглядно будем видеть область в которой может передвигаться наш npc и так же области в которую npc не будет случайно заходить.

Зададим на нашей карте 2 места взяв из вкладки Modes стандартную навигацию NavMeshBoundsVolume.

Unreal Engine 4 — как устроенна навигация в NavMeshBoundsVolume - 1

Следующим шагом, что бы задать случайное место в которое нужно двигаться создадим в нашем npc переменную типа RacastNavMesh, почему именно данный тип нас интересует? А все очень просто, наш npc двигается не по NavMeshBoundsVolume как можно было бы подумать. Здесь логика следующая, после того как вы на локацию перенесли NavMeshBoundsVolume и отредактировали границы локации передвижения для npc, в World Outliner создается дополнительный элемент на карте RecastNavMesh-Default типа RacastNavMesh. Так вот именно данный инструмент позволяет понять нашему npc куда нужно двигаться, то есть он перемещается не по NavMeshBoundsVolume, здесь NavMeshBoundsVolume служит инструментом для создания зоны перемещения RecastNavMesh-Default. Если удалить с карты данный элемент то NavMeshBoundsVolume останутся на карте, а зона передвижения для Npc исчезнет.

Unreal Engine 4 — как устроенна навигация в NavMeshBoundsVolume - 2

Для генерации данной зоны нужно взять NavMeshBoundsVolume и отредактировать его границы или просто чуть чуть сдвинуть вверх (вниз, влево или вправо).

Unreal Engine 4 — как устроенна навигация в NavMeshBoundsVolume - 3

Редактируем второй NavMeshBoundsVolume

Unreal Engine 4 — как устроенна навигация в NavMeshBoundsVolume - 4

Важно! На карте создается только один RecastNavMesh-Default то есть здесь не создается под каждый NavMeshBoundsVolume свой RacastNavMesh.

Далее помещаем npc в NavMeshBoundsVolume и прописываем алгоритм поиска случайной точки.

Unreal Engine 4 — как устроенна навигация в NavMeshBoundsVolume - 5

На выходе получаем что наш npc будет искать случайную точку в NavMeshBoundsVolume в котором он находится.

1. NavMeshBoundsVolume

Unreal Engine 4 — как устроенна навигация в NavMeshBoundsVolume - 6

2. NavMeshBoundsVolume

Unreal Engine 4 — как устроенна навигация в NavMeshBoundsVolume - 7

Не могу сказать что это действительно самый лучший способ для разделения области навигации, здесь моя задача показаться именно сам инструмент NavMeshBoundsVolume, а как действительно сделать навигацию для своих npc уже решать вам. Удачи!

Автор: крепыш

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js