每个人都好。 我正在开发一个顶视角的生存游戏,遇到了Unity原生NavMesh的问题。 我附上了一个视频,展示了具体的问题。 基本上,我有可破坏的障碍物,如营火/箱子/墙壁,玩家可以放置它们。 我不想使用NavMesh切割来使它们完全不可行走,因为如果玩家完全围绕自己放置了对象,敌人AI需要知道它仍然可以通过破坏对象来到达玩家。 因此,我放置这些可破坏的对象在一个自定义NavMesh区域中,并给予它们一个高成本权重,例如10或50。 我的想法是,如果有一个清晰的路径,AI将绕过它们,如果这是唯一的方式或绕过它们需要太长时间,AI将走向它们并攻击它们。 但是,问题是路径规划变得疯狂,陷入无限循环。 当AI靠近这些对象时,穿过高成本区域的行走总成本与绕过它们的成本在数学上非常接近。由于代理在移动时,其精确位置每帧都会变化,这会导致funnel算法使用的穿越NavMesh多边形的角度略有不同。 在一个帧中,直接穿过成本略低,因此它会转向攻击。在下一个帧中,角度会改变,绕过的成本变得更便宜,于是它又转回去了。 它就这样无限振荡。 我真的不想通过添加重新计算定时器或冷却时间来修复这个问题。 游戏非常动态,玩家不断移动,对象被放置,移动和销毁。 如果我添加一个延迟到路径规划中,AI会感觉迟钝和对环境不敏感。 同样,对于一个简单的射线到玩家,如果路径被阻塞:它会使敌人“愚蠢”并无视障碍物,只要前方有东西即使有更短的路径。 有没有人处理过这个特定的NavMesh限制? 有没有方法可以稳定路径评估而不依赖于斑点或放弃并从头开始编写一个自定义基于网格的路径规划? 有任何建议都非常感谢。 在视频中展示的调试胶囊的代码:https://pastes.dev/FVVdRtu5Th(它是简化版的1k+行代码的敌人,除了攻击和移动自主和场景视图之外的部分)