NavMeshAgent.nextPosition
Declaration
public Vector3 nextPosition;Описание
Получает или устанавливает позицию моделирования агента navmesh.
Вектор местоположения указывается в мировых пространственных координатах и единицах.
nextPosition соединен с Transform.position. По умолчанию позиция Transform агента навигации совпадает с внутренней позицией симуляции на момент вызова функции Update скрипта. Эту связь можно включать и отключать, задавая updatePosition.
Когда updatePosition верно, Transform.position отражает симулированное положение, когда false положение преобразования и агента navmesh не синхронизированы, и вы увидите разницу между ними в целом. Когда updatePosition вновь включается, Transform.position будет немедленно перемещена, чтобы соответствовать nextPosition.
Задавая nextPosition, вы напрямую управляете тем, где должна находиться внутренняя позиция агента. Агент будет смещён к этой позиции, но с учётом связности и границ навигационной сетки. Поэтому приём полезен только при непрерывном обновлении и оценке позиций. Дополнительные ресурсы: Warp для телепортации агента navmesh.
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 контролируется чем-то другим — e.g. аниматор, физика, скрипт или ввод.
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; } } }
Дополнительные ресурсы: Move для перемещения агента с относительной позицией.