Найти тему
Punk Programmer

UNITY// NAV MESH// РАБОТА С АГЕНТОМ

Оглавление

Решил немного развивать свой канал при помощи статей. Одних видео, как оказалось, недостаточно. Ну раз такое дело, то давайте разберём компонент NavMesh Agent из Unity.

Зачем он вообще нужен?

В своём видео я говорил вам о том, что без этого компонента нельзя передвигаться по карте навигации. И это так. Только объекты, имеющие компонент NavMeshAgent способны передвигаться по карте навигации.

Из официальной документации Unity можно узнать следующее:

"Агенты анализируют игровой мир с помощью NavMesh и они знают, как избегать друг друга, а также других движущихся препятствий"

Таким образом, можно создать несколько агентов, которые будут ходить по локации, и они не будут сталкиваться друг с другом.

Однако, для того, чтобы правильно настроить NavMeshAgent, необходимо знать о его свойствах. Об этом можно прочитать в официальной документации Unity, но раз вы уже здесь, то этим займусь я.

Свойства NavMeshAgent

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

Speed - Максимальная скорость перемещения. Свойство, отвечающее за скорость передвижения агента по карте навигации.

Angular Speed - Максимальная скорость вращения.

Acceleration - Максимальное ускорение (в мировых единицах в секунду в квадрате).

Stopping distance- Расстояние,на котором агент остановится, когда приблизится к местоположению цели.

Auto Braking - Если этот параметр включен, агент будет замедляться при достижении пункта назначения.

Настройки NavMeshAgent
Настройки NavMeshAgent

Далее идут свойства, которые отвечают за самого агента. Они называются Obstacle Avoidance.

Radius - Радиус агента. Используется для расчета столкновений между препятствиями и другими агентами.

Height- Высота, необходимая агенту для прохождения под препятствием над головой.

Base offset - Величина смещения агента.

Quality- Качество обхода препятствий. Если у вас большое количество агентов, вы можете сэкономить процессорное время за счет снижения качества обхода препятствий. Установка значения "Предотвращение" в значение "нет" только разрешит столкновение, но не будет пытаться активно избегать других агентов и препятствий.

Priority- Агенты с более низким приоритетом будут проигнорированы агентом при выполнении обхода. Значение должно находиться в диапазоне 0-99, где меньшие цифры указывают на более высокий приоритет.

В самом конце у нас остаются свойства, отвечающие за поиск пути по карте навигации.

Auto Traverse OffMesh Link - Значение для автоматического обхода ссылок вне сетки.

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

Area Mask- Маска области описывает, какие типы областей агент будет учитывать при поиске пути. Когда вы готовите карту NavMesh, вы можете задать тип области каждой сетки. Например, вы можете пометить лестницу специальным типом области и запретить некоторым типам персонажей использовать лестницу.

Таким образом, мы с вами познакомились с основными свойствами компонента NavMesh. Документация Unity даёт достаточно подробное описание этих свойств.

Итог

NavMesh отличный инструмент, если вам необходимо создать ИИ, который будет преследовать игрока. Также, NavMesh подходит вам в том случае, если вы хотите сделать игру от 3 лица с передвижением только при помощи курсора мыши.

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

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

Спасибо за внимание