Nav3DAgent
Как упоминалось выше, вы можете использовать скрипт Nav3DAgent в качестве компонента для вашего игрового объекта и обращаться к нему через GetComponent()
.
Для управления Nav3DAgent реализованы следующие публичные методы.
- Применяет описание к вашему агенту.
public void SetDescription(Nav3DAgentDescription _Description)
- Команда двигаться к точке. Любая действующая команда будет прервана, агент начнет движение к точке, в соответствии с параметрами его описания.
public void MoveTo(Vector3 _Point, Action _OnReach = null, Action _OnPathfindingFail = null)
- Добавить точку следования в очередь. Таким образом может быть добавлено сколько угодно точек следования. Если агент выполняет команду
FollowTarget
, то она прервется и он начинает выполнять команду следование к точке.
public void MoveToEnqueue(Vector3 _Point, Action _OnReach = null, Action _OnPathfindingFail = null)
Команда преследовать движущийся Transform.
public void FollowTarget(
Transform _Target,
float _OffsetToleranceUpdate,
float _DistToReach = 0,
Action _OnReach = null,
Action _OnCancel = null,
Action _OnPathfindingFail = null
)
Transform _Target
– Transform, который необходимо преследовать.float _OffsetToleranceUpdate
– величина минимального смещения цели, которое приведет к обновлению пути к цели. Если ваш агент имеет параметр Motion Navigation Type описания установленным в значение GLOBAL, или GLOBAL_AND_LOCAL, то каждый раз при смещении преследуемого Transform более чем на _OffsetToleranceUpdate произойдет обновление пути.- Если ваш агент имеет параметр Motion Navigation Type описания установленным в значение GLOBAL, или GLOBAL_AND_LOCAL, то каждый раз при смещении преследуемого Transform более чем на
_OffsetToleranceUpdate
вызовет обновление пути. float _DistToReach
– расстояние до цели, приблизившись на которое цель будет считаться достигнутой. Хотим заметить, что в случае когда агенту приходится искать глобальный путь, цель может никогда не быть достигнутой, поскольку достигнув конца пути может оказаться, что цель за прошедшее время сдвинулась. Таким образом условие совпадения координат преследуемой цели и агента может быть труднодостижимым.Action _OnReach
– Делегат, который будет выполнен, когда цель будет успешно достигнута.Action _OnCancel
– делегат, выполняемый в случае, если ссылка на преследуемый Transform стала null, либо missing.
- Прерывает выполнение текущей команды.
public void Stop()
- Позволяет получить список агентов внутри радиуса _Radius от агента. Вызов этого метода по событию Update, может негативно сказаться на производительности, поэтому рекомендуется не вызывать его слишком часто (например, нескольких раз в секунду должно быть достаточно для любых игровых сценариев).
public List GetAgentsInRadius(float _Radius, Predicate _Predicate = null)
- Визуализирует агента с помощью Gizmos. Может быть полезно для отладки в Editor
public void Visualize(bool _DrawRadius = true, bool _DrawPath = true, bool _DrawVelocities = true)
You can find examples of how to use Nav3DAgent in the demo scenes located in the Demo folder of the asset.