获取或设置导航网格智能体的仿真位置。
位置向量采用世界空间坐标和单位。
nextPosition 与 Transform.position 绑定。在默认情况下,当调用脚本 Update 函数时,导航网格智能体的 Transform 位置将匹配内部仿真位置。可以通过设置 updatePosition 来打开或关闭此绑定。
当 updatePosition 为 true 时,Transform.position 将反映仿真位置;为 false 时,变换和导航网格智能体的位置不同步,通常情况下你将看到两者之间的差异。重新打开 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; } } }
其他资源:Move,用于通过相对位置移动智能体。