Описание
Получает или задает позицию моделирования агента навигационной сетки.
Вектор положения находится в координатах и единицах мирового пространства.
NextPosition связан с Transform.position. По умолчанию позиция Transform агента navmesh будет соответствовать внутренней позиции симуляции во время вызова функции обновления скрипта. Эту связь можно включать и выключать, задав updatePosition.
Когда updatePosition имеет значение true, Transform.position отражает смоделированное положение, положение преобразования и агента navmesh не синхронизировано, и вы увидите разницу между ними в целом. Когда updatePosition снова включается, Transform.position немедленно перемещается в соответствии с nextPosition.
Установив nextPosition, вы можете напрямую управлять внутренней позицией агента. Агент будет перемещаться к позиции, но ограничен связностью и границами навигационной сетки. Таким образом, это будет полезно только в том случае, если позиции постоянно обновляются и оцениваются.
Смотрите так же: Warp для телепортации агента навигационной сетки.
using UnityEngine;
using UnityEngine.AI;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
void Start()
{
// Update the transform position explicitly in the OnAnimatorMove callback
GetComponent<NavMeshAgent>().updatePosition = false;
}
void OnAnimatorMove()
{
transform.position = GetComponent<NavMeshAgent>().nextPosition;
}
}
Кроме того, может быть полезно напрямую контролировать позицию агента, особенно если Преобразование GO контролируется чем-то другим, например. аниматор, физика, сценарий или ввод.
using UnityEngine;
using UnityEngine.AI;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
public bool agentIsControlledByOther;
void Update()
{
var agent = GetComponent<NavMeshAgent>();
agent.updatePosition = !agentIsControlledByOther;
if (agentIsControlledByOther)
{
GetComponent<NavMeshAgent>().nextPosition = transform.position;
}
}
}
Смотрите так же: Переместить для перемещения агента с относительной позицией.