获取或设置导航网格代理的模拟位置。
位置向量位于世界空间坐标系和单位中。
nextPosition 被耦合到 Transform.position。默认情况下,在调用脚本 Update 函数时,导航网格代理的变换位置将会匹配内部模拟位置。通过设置 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。