Unity Nav Mesh:找到圆上最近的位置

Fro*_*ndC 7 c# unity-game-engine navmesh

想象一下,弓箭手需要至少距离 3m 才能射中目标,但距离不能超过 10m。所以他必须在这个半径内找到一个有效的位置(当然是在 3d 中)。

因此,我需要的是一种方法,它可以返回导航网格上最近(可到达)的点,并在半径内具有清晰的视线。

在此输入图像描述

我正在考虑始终使用圆边作为计算的起点。因为这应该始终是最近的点。但这在本例中不起作用:

在此输入图像描述

由于圆圈边缘没有直接视线,我不能将其作为起点。

我也在考虑随机选择点(例如 5000 个),检查它们是否具有视线并检查与弓箭手的距离。但这当然是一个可怕的解决方案。

怎样才能找到这个神奇的点呢?

(我不需要脚本,而是一个想法:D)

编辑: 不需要有目标的有效路径。例如,如果一条河流挡住了弓箭手的路径,他将无法找到目标。但他仍然可以射过河。这意味着他可以找到一个有效的位置。 在此输入图像描述

Gee*_*tin 0

将玩家导航网格的目的地设置为球体的中心。

每帧都会执行以下操作:
Raycast从球体中心到玩家的当前位置。如果它直接击中玩家且中间没有任何障碍物,则玩家已到达最近且目标明确的位置。