我有一个函数可以返回 NavMesh 路径的总长度,使用Vector3.SqrMagnitude来避免Vector3.Distance中 Sqrt 计算的开销:
float DistanceAlongPath(NavMeshPath path)
{
float sum = 0;
for (int x = 0; x < path.corners.Length - 1; x++)
{
sum += Vector3.SqrMagnitude(path.corners[x + 1] - path.corners[x]);
}
return sum;
}
当路径只有两个点时,计算似乎很好,但是在 3 点或更多点时,长线返回的值总是小于只有 2 点的短线返回的值。
第一张图片显示的距离是 3848,第二张图片显示的距离是 3419,尽管路径要长得多。
Vector3.Distance 适用于任意数量的点。
我错过了什么吗?