Nav3DAgentDescription - Nav3D Doc
leafleafDocy banner shape 01Docy banner shape 02

Docy Child

Nav3DAgentDescription

Время на чтение: 8 минуты
				
					Nav3DAgentDescription
				
			

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

После создания описания в инспекторе вы увидите следующий список групп параметров:

Кнопка Set default parameters ускорит настройку всех параметров, выставив их значения по умолчанию.

Приведем пояснение назначения параметров и их допустимые величины.

Behavior

Параметр Свойство в Nav3DAgentDescription Тип Диапазон значений
Behavior Type
Behavior Type
enum BehaviorType
DEFAULT, YIELDING, INDIFFERENT

Описывает тип поведения агента.

  • Агент может вести себя стандартным образом (DEFAULT), т.е.искать путь, за тем следовать по нему, или выполнять любые другие указания пользователя. Поведение агента будет полностью определяться его описанием.
  • Агент может иметь уступающее поведение (YIELDING). Он не сможет выполнять команды пользователя и не будет иметь собственных задач.
    (При попытке вызова методов движения к цели будет выброшено исключение.) Его единственной заботой будет уступать дорогу агентам поблизости. С ними он будет взаимодействовать с помощью механизма Local avoidance, в соответствии со своими параметрами скорости и радиуса.
  • Также агент может быть безразличным (INDIFFERENT).
    Агент не будет делать ничего, просто будет находиться на месте. Другие агенты смогут обходить его при выполнении локального уклонения. Попытка вызова методов следования к цели с таким типом поведения повлечет выброс исключения, по аналогии с YIELDING.
Параметр Свойство в Nav3DAgentDescription Тип Диапазон значений
Motion Navigation Type
MotionNavigationType
enum MotionNavigationType
GLOBAL, GLOBAL_AND_LOCAL, LOCAL

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

  • Используя глобальный путь (GLOBAL). В таком случае агент выполнит поиск пути и будет двигаться по нему, невзирая на внешние условия (другие агенты, находящиеся слишком близко края препятствий).
  • С использованием только локального уклонения (LOCAL). Агент не будет использовать поиск пути для движения, а будет двигаться к цели по прямой, попутно уклоняясь от других агентов и препятствий, когда они встречаются на курсе движения. Разумеется не всякое препятствие может быть преодолено таким образом.
  • Наконец, агент может осуществлять движение к цели используя поиск пути и локальное уклонение одновременно (GLOBAL_AND_LOCAL). Агент будет двигаться по найденному пути и уклоняться от подошедших близко других агентов, а также находящихся слишком близко препятствий.

Radius

Параметр Свойство в Nav3DAgentDescription Тип Диапазон значений
Radius
Radius
float
>0

Радиус агента используется для осуществления маневров локального уклонения. Установление корректного радиуса важно для эффективного выполнения локального уклонения как самим агентом, так и прочими агентами поблизости. Советуем настраивать радиус так, чтобы все визуальное содержимое игрового юнита, коим является агент, находилось внутри сферы.

Speed

Параметр Свойство в Nav3DAgentDescription Тип Диапазон значений
Speed
Speed
float
>0

Скорость движения агента. Можете менять ее в любой момент времени, если потребуется.

Параметр Свойство в Nav3DAgentDescription Тип Диапазон значений
Max Speed
Max Speed
float
>Speed

Максимальная скорость агента. Этот параметр нужен для выполнения локального уклонения. В некоторых ситуациях агенту может потребоваться ускориться, чтобы избежать столкновения. Если значение будет слишком велико, то порой агент может двигаться рывками при выполнении локального уклонения. Так что советуем выставлять максимальную скорость чуть больше чем Speed(больше менее чем в полтора раза).

Для вашего удобства в инспекторе имеется два способа установления этого значения. С помощью конкретного значения. Либо с помощью множителя для Speed. Советуем использовать множитель, для того чтобы максимальная скорость зависела от Speed агента. Тогда MaxSpeed будет меняться вслед за изменением Speed

Local avoidance

Параметр Свойство в Nav3DAgentDescription Тип Диапазон значений
ORCA Tau
ORCATau
float
>0

Временной диапазон вычисления скоростного препятствия. Не рекомендуем менять этот параметр

Лучше понять его смысл вам поможет оригинальная статья по ORCA Reciprocal n-body Collision Avoidance. Jur van den Berg, Stephen J. Guy, Ming Lin, and Dinesh Manocha

Параметр Свойство в Nav3DAgentDescription Тип Диапазон значений
Agents considered number limit
Agents considered number limit
bool
true, false

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

Параметр Свойство в Nav3DAgentDescription Тип Диапазон значений
Agents number
ConsideredAgentsNumberLimit
int
>=1

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

Поиск пути

Параметр Свойство в Nav3DAgentDescription Тип Диапазон значений
Pathfinding timeout (ms)
PathfindingTimeout
int
>0

Максимальное время, отведенное на выполнение поиска пути. При превышении этого времени поиск(pathfinding) будет отменен, и будет вызван колбек _OnPathfindingFail.

Параметр Свойство в Nav3DAgentDescription Тип Диапазон значений
Smooth the path
SmoothPath
bool
true, false

Нужно ли сглаживать найденный путь.

Параметр Свойство в Nav3DAgentDescription Тип Диапазон значений
Samples per min bucket volume
SmoothRatio
int
>0

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

Параметр Свойство в Nav3DAgentDescription Тип Диапазон значений
Auto-update path on stagnant behavior
AutoUpdatePath
bool
true, false

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

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

Параметр Свойство в Nav3DAgentDescription Тип Диапазон значений
Auto-update cooldown (ms)
PathAutoUpdateCooldown
int
>=1

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

Motion

Параметр Свойство в Nav3DAgentDescription Тип Диапазон значений
Target reach distance
TargetReachDistance
float
>=0

Расстояние достижения цели. Когда вы отдаете агенту приказание достичь какой-либо цели, цель будет считаться достигнутой, когда pivot агента совпадет с координатой цели (расстояние между ними будет равным 0). Это может быть неудобно, если целью является объект с мешем, допустим планета в космосе. В таком случае выставьте этот параметр равным сумме радиуса видимой части агента и радиуса планеты. Тогда агент остановится, достигнув поверхности планеты.

Параметр Свойство в Nav3DAgentDescription Тип Диапазон значений
Max rotation in degrees per fixed update tick
MaxAgentDegreesRotationPerTick
float
>=0

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

Velocity blending

При использовании глобального поиска пути и локального уклонения агент двигается, используя три вектора скорости:

  1. Вектор скорости следования по пути.
  2. Вектор скорости уклонения от агентов.
  3. Вектор скорости уклонения от препятствий.

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

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

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

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

Все веса задаются типом float и должны иметь значение более 0

Соответствующие названия свойств в Nav3DAgentDescription:

  • PathVelocityWeight
  • PathVelocityWeight1
  • PathVelocityWeight2
  • AgentsAvoidanceVelocityWeight
  • AgentsAvoidanceVelocityWeight1
  • AgentsAvoidanceVelocityWeight2
  • ObstacleAvoidanceVelocityWeight
  • ObstacleAvoidanceVelocityWeight1
  • ObstacleAvoidanceVelocityWeight2

Debug

Use Log UseLog bool Whether it is necessary to log agent work processes. true, false
Log records count
LogSize
int
Agent log size.
>0
Share this Doc
CONTENTS
Chat Icon Close Icon
ru_RURussian