Unreal Engine

Создание базового ИИ (НПС) на AI Unreal Engine 5.3.

Создание базового ИИ (НПС) на AI Unreal Engine 5.3.

Что за игра без НПС, врагов и ловушек? В этом цикле статей разберем способы создания AI в Unreal Engine 5.3.
Первая статья будет посвящена созданию базового интеллекта в ней мы научим НПС передвигаться и проигрывать базовую анимацию, обходить препятствия, разворачиваться, все будет сделано на blueprint (визуальное программирование с использованием нодов).

Создание НПС в Unreal Engine 5.3.

Создадим новую папку «NPS»
В папке, создаем “blueprint class” из списка выбираем “Character” меняем название.
Открываем “blueprint”, переходим во “Viewport” здесь мы зададим 3д объект нашему NPS. В “components” выбираем “Mesh” перейдем в “Details” ищем вкладку “Mesh”.

Unreal Engine
Unreal Engine

В данной вкладке выбираем “Skeletal Mesh Asset” щелкаем на стрелочку, из появившегося списка выбираем походящую основу. Устанавливаем его в окне “Viewport” согласно капсуле коллизии. Используем стрелочки перемещения и поворота, поворачиваем по направлению основной стрелки на 90 градусов.
Далее в “Details” находим вкладку “Animation” где установим подходящую анимацию для НПС. “Animation Mode” – “Use Animation Blueprint” и выставим “Anim Class” – “ABP_Manny”

 

Unreal Engine
Unreal Engine

Компилируем и сохраняем, перетянем НПС на карту для просмотра правильности настроек высоты.

Unreal Engine
Unreal Engine

Создаем первую логику AI на “blueprint”.

Для этого открываем нашего НПС и переходим в “Event Graph”.
Щёлкнем правой кнопкой мыши и найдем ноду “Add Movement Input”
Соединим его с “Event Tick”; выставим “World Direction” по x на 1ед и в “Scale Value” – 0.5ед.

Unreal Engine
Unreal Engine

Запустим в тестовом режиме, для проверки и увидим, что НПС начал двигаться по прямой пока не упрется в стену. В данной логике НПС еще не умеет обходить препятствие. Научим его.

Создаем логику зрения Ai на “blueprint” в Unreal Engine 5.3.

Для создания зрения необходимо добавить луч, который будет исходить из НПС на определенное расстояние и будет служить зрением, которое будет ощупывать пространство в переди.
Временно отключим “Add Movement Input”. Зажмем alt и щёлкнем по проводу соединяющему ноды. Найдем и вызовем ноду “Line Trace By Channel” соединим с “Event Tick”. Далее в “start” подключим “Get Actor Location” текущее местоположение нпс.

Unreal Engine
Unreal Engine

Создадим переменную length тип integer скомпилируем и установим значение на 400, вытянем на сетку.

Unreal Engine
Unreal Engine

Hайдем “Get Actor Forward Vector” направление вектора в перед и перемножим его с переменной, далее добавим начальное положение и выведем в конечное положение “End” ноды “Line Trace By Channel”.
Установим “Draw Debug Type” на “For One Frame”

Unreal Engine
Unreal Engine
Unreal Engine
Unreal Engine

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

Создаем логику принятия решения Ai на “blueprint” в Unreal Engine 5.3.

От нода “Line Trace By Channel” вытянем и найдем ноду “Branch” ветвление, истина или лож.
Соединим.

Unreal Engine
Unreal Engine

Добавим движение вперед если не обнаружено препятствий, соединим false ноды “Branch” с нодой “Add Movement Input”. Теперь если нет препятствий, то нпс движется прямо.
Построим логику если на пути препятствие:
Создадим переменную rotate тип vector, скомпилируем и установим по x на 1ед. Вытащим на сетку.
Найдем “Rotate Vector” соединим переменную в “A”. Далее вытащим эту же переменную со значением set и подключим к “Branch” в true и соединим с “Add Movement Input”, “Rotate Vector” подключим к Rotate. В “Rotate Vector” по z установим на 13ед. Также переменную rotate подключим к “Add Movement Input” в “World Direction”. Сохраним и скомпилируем.


Теперь наш нпс в момент встречи препятствий ходит дерганной походкой без порота в сторону, включим возможность поворота.
В “components” nps находим “Character Movement” в “Details” находим “Character Movement (Rotation Settings)” и устанавливаем галочку в “Orient Rotation to Movement”.


Теперь наш НПС движется и обходит препятствие путем поворачивания в сторону.
Теперь добавим возможность случайного поворота в право или на лево.
В ноде “Rotate Vector” на “B” щелкаем правой кнопкой мыши и выбираем Split. Разбивает на составные части.


Из оси Z вытягиваем провод и ищем ноду “Select”, устанавливаем значение 13ед и второе -13ед.
В index подключим ноду “Random Bool”


Компилируем и проверим, теперь наш НПС движется и обходит препятствие поворачиваясь в случайном направлении.

Продолжение в следующей статье.

  1. НПС простое движение к точке на Unreal Engine 5.3.: https://moi3d.ru/nps-prostoe-dvizhenie-k-tochke-na-unreal-engine-5-3/

 

полезные ссылки:

  1. Блог по моделированию на Rutub – https://rutube.ru/channel/24865428/
  2. Статьи по 3д в blender – https://moi3d.ru/category/stati/
  3. Создание игр на Unreal Engine 5 – https://moi3d.ru/category/unreal-engine/
  4. Видео на моем ютуб канале – https://www.youtube.com/channel/UC1zF0x3uodmBOAJPFjXaD6g