版本:Unity 6 (6000.0)
语言英语
  • C#

NavMeshAgent.CalculatePath

提出更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每项建议的变更,并在适用时进行更新。

关闭

提交失败

由于某些原因,无法提交您建议的更改。请在几分钟后<a>重试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public boolCalculatePath(Vector3targetPosition,AI.NavMeshPathpath);

参数

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; } } }