【问题标题】:Unity Nav Mesh : find nearest position on a circleUnity Nav Mesh:在圆上找到最近的位置
【发布时间】:2022-07-09 11:05:23
【问题描述】:

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

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

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

由于圆边没有直接的视线,我不能把它作为起点。

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

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

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

编辑: 不需要有到目标的有效路径。如果例如一条河流挡住了弓箭手无法找到目标的道路。但他仍然可以在河上射击。这意味着他可以找到一个有效的位置。

【问题讨论】:

    标签: c# unity3d navmesh


    【解决方案1】:

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

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

    【讨论】:

    • 这行不通,因为可能会有障碍物,这会使 LoS 完好无损。例如。弓箭手站在悬崖边上,他的目标在悬崖的另一边。他甚至无法找到他,但因为他可以从这个位置射击,所以它是有效的。
    • 我不太明白,你能添加这个例子的粗略图像吗?
    • 我已经编辑了我的帖子。现在有一张新照片
    • 对,我明白我哪里出错了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    相关资源
    最近更新 更多