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

NavMesh.CalculatePath

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们会逐条阅读用户建议的更改并在适当情况下进行更新。

关闭

提交失败

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

关闭

取消

声明

public static bool CalculatePath(Vector3 sourcePosition, Vector3 targetPosition, int areaMask, AI.NavMeshPath path);

参数

sourcePosition 请求路径的初始位置。
targetPosition 请求路径的最终位置。
areaMask 位字段掩码,指定计算路径时允许经过哪些 NavMesh 区域。
path 结果路径。

返回

bool 如果找到完整或部分路径,则返回 True。否则,返回 False。

说明

计算两点之间的路径,并将结果路径存储起来。

在需要之前规划路径,使用此函数可避免游戏延迟。你还可以使用此函数在移动代理之前检查目标位置是否可达。

此函数是同步的。它会立即执行路径查找,在处理非常长的路径时可能会对帧速率产生不利影响。建议每帧仅执行几次路径查找,例如,评估覆盖点的距离时。

使用返回的路径,使用 NavMeshAgent.SetPath 设置代理的路径。要使 SetPath 起作用,代理必须靠近起点。

// ShowGoldenPath
using UnityEngine;
using UnityEngine.AI;

public class ShowGoldenPath : MonoBehaviour { public Transform target; private NavMeshPath path; private float elapsed = 0.0f; void Start() { path = new NavMeshPath(); elapsed = 0.0f; }

void Update() { // Update the way to the goal every second. elapsed += Time.deltaTime; if (elapsed > 1.0f) { elapsed -= 1.0f; NavMesh.CalculatePath(transform.position, target.position, NavMesh.AllAreas, path); } for (int i = 0; i < path.corners.Length - 1; i++) Debug.DrawLine(path.corners[i], path.corners[i + 1], Color.red); } }

声明

public static bool CalculatePath(Vector3 sourcePosition, Vector3 targetPosition, AI.NavMeshQueryFilter filter, AI.NavMeshPath path);

参数

sourcePosition 请求路径的初始位置。
targetPosition 请求路径的最终位置。
filter 过滤器,指定计算路径时允许经过的 NavMesh 区域的开销。
path 结果路径。

返回

bool 如果找到完整或部分路径,则返回 True,否则返回 False。

说明

计算 NavMesh 上映射的两个位置之间的路径,遵循 filter 参数定义的约束和开销。