1. Подготовка окружения: Настройка NavMeshBoundsVolume и создание Character Blueprint
Подготовка окружения: Настройка NavMeshBoundsVolume и создание Character Blueprint
Добро пожаловать в курс «Создание патрулирующего врага в Unreal Engine 5 на Blueprints». Это первая статья нашего цикла, в котором мы пройдём путь от пустой сцены до создания полноценного искусственного интеллекта (ИИ), способного самостоятельно перемещаться по уровню, патрулировать территорию и реагировать на окружение.
Прежде чем мы начнём писать логику поведения, нам необходимо подготовить фундамент. Искусственный интеллект в играх не обладает зрением в человеческом понимании. Он не «видит» стены или обрывы. Ему нужна специальная карта проходимости, которая подскажет, где можно идти, а где — нет. Кроме того, нам потребуется само «тело» нашего врага — игровой объект, который будет подчиняться физике и командам перемещения.
В этой статье мы разберем два критически важных этапа:
Что такое NavMesh и зачем он нужен?
Представьте, что вы находитесь в совершенно темной комнате. Чтобы передвигаться и не натыкаться на мебель, вам нужна карта или тактильные ощущения. Для ИИ в Unreal Engine такой картой является Navigation Mesh (или сокращенно NavMesh).
NavMesh — это упрощенная геометрическая проекция вашего уровня, которая накладывается поверх пола, лестниц и наклонных поверхностей. Она определяет зоны, доступные для перемещения агентов (персонажей под управлением ИИ).
> NavMesh — это невидимая для игрока сетка полигонов, которую движок использует для построения путей от точки А в точку Б, огибая препятствия.
Без этой сетки функция AI Move To, которую мы будем использовать в будущих уроках, просто не сработает, так как враг не будет знать, существует ли путь к цели.
Настройка NavMeshBoundsVolume
Чтобы движок сгенерировал навигационную сетку, нам нужно указать ему область, внутри которой это необходимо сделать. Для этого используется специальный объем — NavMeshBoundsVolume.
Шаг 1: Добавление объема на уровень
Window -> Place Actors.Nav Mesh Bounds Volume.Шаг 2: Масштабирование зоны
Изначально объем представляет собой небольшой куб. Нам нужно растянуть его так, чтобы он охватывал всю территорию, где должен ходить наш враг.
R) или панель Details, чтобы изменить параметры Scale (Масштаб) или Brush Settings.Шаг 3: Визуализация и проверка
Самый важный этап — проверка того, что сетка построилась корректно. Unreal Engine позволяет увидеть NavMesh прямо в редакторе.
P (английскую) на клавиатуре.Если зеленого цвета нет: * Проверьте, пересекает ли NavMeshBoundsVolume геометрию пола. * Убедитесь, что у пола есть коллизия (Collision).
Зеленые участки — это места, где враг сможет пройти. Красные участки (если они есть) или отсутствие цвета означают препятствия.
Создание Character Blueprint
Теперь, когда у нас есть «дорога», нам нужен «пешеход». В Unreal Engine существует несколько базовых классов для создания сущностей:
* Actor: Статичный или простой объект. * Pawn: Объект, которым можно управлять (игрок или ИИ), но без сложной физики движения. * Character: Специализированный тип Pawn, который уже имеет компонент для ходьбы, бега, прыжков и плавания.
Для нашего врага мы выберем класс Character, так как он содержит компонент CharacterMovementComponent. Этот компонент берет на себя сложную математику передвижения, гравитации и взаимодействия с навигационной сеткой.
Шаг 1: Создание ассета
Blueprints -> AI).BP_EnemyBase. Использование суффикса Base полезно, если вы захотите в будущем создать разные типы врагов, наследуясь от этого класса.!Меню выбора родительского класса при создании нового Blueprint.
Шаг 2: Настройка внешнего вида (Mesh)
Откройте созданный BP_EnemyBase двойным кликом. Вы попадете в редактор блюпринтов.
Mesh (CharacterMesh0).Skeletal Mesh Asset выберите модель вашего персонажа. Если вы используете стандартный шаблон от третьего лица, это может быть SK_Mannequin или SKM_Quinn.Скорее всего, после выбора меша он окажется в неправильном положении относительно капсулы (Capsule Component).
* Capsule Component — это физическая оболочка врага. Именно она сталкивается со стенами. * Меш должен находиться строго внутри капсулы.
Опустите меш по оси Z (обычно на -90 единиц) и поверните его по оси Z (обычно на -90 градусов), чтобы лицо персонажа смотрело в ту же сторону, куда указывает синяя стрелка (ArrowComponent). Синяя стрелка показывает «перед» (Forward Vector) персонажа.
Шаг 3: Настройка Character Movement
Это ключевой момент для правильного поведения ИИ при патрулировании.
CharacterMovement.Rotation.Зачем это нужно? Когда ИИ получает команду идти в точку, он начинает двигаться. Если эта галочка включена, персонаж автоматически повернется лицом в сторону движения. Без этой настройки враг будет «плыть» боком или спиной, сохраняя изначальный поворот.
Также в компоненте CharacterMovement вы можете настроить скорость врага:
* Max Walk Speed: Максимальная скорость ходьбы. Для патрулирования рекомендуется ставить значение ниже, чем для погони (например, 200 или 300).
Размещение врага на уровне
Последний шаг подготовки — поместить нашего врага в мир.
Compile) и сохраните (Save) ваш блюпринт.BP_EnemyBase из Content Browser на сцену.P подсвечивается зеленым.Итоги
Мы успешно подготовили почву для создания интеллекта. У нас есть: * NavMeshBoundsVolume, который определяет, где ИИ может ходить. * BP_EnemyBase, который обладает физикой, моделью и настройками для правильного поворота при движении.
В следующей статье мы перейдем к программированию логики: научим нашего врага выбирать случайные точки на NavMesh и перемещаться к ним.