Version: 2020.1

NavMesh.CalculatePath

切换到手册
public static bool CalculatePath (Vector3 sourcePosition, Vector3 targetPosition, int areaMask, AI.NavMeshPath path);

参数

sourcePosition 所请求路径的最初位置。
targetPosition 所请求路径的最终位置。
areaMask 位域遮罩,指定在计算路径时可通过的导航网格区域。
path 生成的路径。

返回

bool 如果找到完整路径或部分路径,则为 true,否则为 false。

描述

计算两点之间的路径并存储生成的路径。

此函数可用于提前规划路径以避免需要路径时游戏延迟。另一个用途是在移动代理之前检查目标位置是否可达。

NavMeshAgent.SetDestination(异步调用)相反,此函数立即计算路径。对于非常长的路径来说,这可能是代价高昂的操作,并且可能导致帧率不稳。建议每帧仅执行少量寻路,例如,在评估到掩蔽点的距离时。

返回的路径可用于使用 NavMeshAgent.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 一种过滤器,指定在计算路径时可以通过的导航网格区域的成本。
path 生成的路径。

返回

bool 如果找到完整路径或部分路径,则为 true,否则为 false。

描述

计算映射到导航网格的两个位置之间的路径,受过滤器参数定义的限制条件和成本的约束。