targetPosition | 请求的路径的最终位置。 |
path | 结果路径。 |
布尔值如果找到完整或部分路径,则为 True。否则为 False。
计算到指定点的路径并存储结果路径。
使用此函数可以在需要之前规划路径,从而避免游戏延迟。还可以使用此函数在移动代理之前检查目标位置是否可达。此函数在搜索匹配路径时会考虑代理的 areaMask、agentTypeID 和区域成本属性。
此函数是同步的。它会立即执行路径查找,在处理非常长的路径时可能会对帧速率产生不利影响。建议在每一帧中只执行几次路径查找,例如,评估到覆盖点的距离时。
使用返回的路径,通过NavMeshAgent.SetPath,为此代理或相同类型的代理设置路径。要使 SetPath 正常工作,代理必须靠近起点,并允许通过起点所在的区域类型移动。
using UnityEngine; using UnityEngine.AI;
[RequireComponent(typeof(NavMeshAgent))] public class ExampleClass : MonoBehaviour { public Transform target;
void Start() { if (target == null) return;
var agent = GetComponent<NavMeshAgent>(); var path = new NavMeshPath(); agent.CalculatePath(target.position, path); switch (path.status) { case NavMeshPathStatus.PathComplete: Debug.Log($"{agent.name} will be able to reach {target.name}."); break; case NavMeshPathStatus.PathPartial: Debug.LogWarning($"{agent.name} will only be able to move partway to {target.name}."); break; default: Debug.LogError($"There is no valid path for {agent.name} to reach {target.name}."); break; } } }