Version: 2023.2
public Vector3 nextPosition ;

描述

获取或设置导航网格代理的模拟位置。

位置向量位于世界空间坐标系和单位中。

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