是的,您可以使用 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
                }
            }
        }
    }
}
是否有方法获取corners是否在OffMeshLink上

原文地址: http://www.cveoy.top/t/topic/bD78 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录