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);
}
}
sourcePosition | 所请求路径的最初位置。 |
targetPosition | 所请求路径的最终位置。 |
filter | 一种过滤器,指定在计算路径时可以通过的导航网格区域的成本。 |
path | 生成的路径。 |
bool 如果找到完整路径或部分路径,则为 true,否则为 false。
计算映射到导航网格的两个位置之间的路径,受过滤器参数定义的限制条件和成本的约束。