是否有方法获取corners是否在OffMeshLink上
是的,您可以使用 NavMesh.SamplePosition 方法来获取给定位置的最近 NavMesh 表面上的点。然后,您可以使用 NavMesh.CalculatePath 方法来计算从当前位置到目标位置的路径。如果路径中包含 OffMeshLink,则您可以检查路径中的每个点是否在 OffMeshLink 上。如果是这样,您可以将其标记为在 OffMeshLink 上。以下是一个示例代码:
Vector3 position = transform.position;
NavMeshHit hit;
if (NavMesh.SamplePosition(position, out hit, 0.1f, NavMesh.AllAreas))
{
NavMeshPath path = new NavMeshPath();
if (NavMesh.CalculatePath(position, hit.position, NavMesh.AllAreas, path))
{
for (int i = 0; i < path.corners.Length - 1; i++)
{
OffMeshLinkData linkData;
if (NavMesh.GetOffMeshLinkDataForLink(path.corners[i], out linkData))
{
if (Vector3.Distance(path.corners[i], linkData.startPos) < 0.1f ||
Vector3.Distance(path.corners[i], linkData.endPos) < 0.1f)
{
// corner is on OffMeshLink
}
}
}
}
}
原文地址: http://www.cveoy.top/t/topic/bD78 著作权归作者所有。请勿转载和采集!