【问题标题】:Move Unity navmesh multiple agents to single point and stop pushing each other将 Unity navmesh 多个代理移动到单点并停止相互推动
【发布时间】:2021-05-04 18:14:02
【问题描述】:

我正在制作一款需要多个角色在狭窄路径中导航的游戏。我不断收到this 问题,即角色在路口不断相互推挤并卡住。没有足够的空间来回避彼此。

我尝试了一种解决方法,我发现here 但这会导致问题,因为导航网格障碍物可能是雕刻的或非雕刻的。如果我选择不雕刻,一个角色会停止移动,以便另一个角色可以通过,但通常另一个角色会一直试图推开停止的熊,他们都被卡住了。这可以通过制作障碍物雕刻来解决,因为其他角色将重新计算围绕它的路径。然而,这意味着当停止的角色再次开始移动时,它会稍微晃动,因为它站立的地方没有任何导航网格数据,所以角色会捕捉到有的地方。

即使角色确实设法到达了他们的目标位置,另一个问题是一个角色到达了目标点,而其他角色继续向第一个角色推进,试图到达目标位置,而不是停下来,如 here 所示。

如果需要,我非常乐意提供更多信息,我们将不胜感激。提前致谢。

【问题讨论】:

    标签: c# unity3d artificial-intelligence navmesh


    【解决方案1】:

    另一种解决方案是将 AI 的物理层设置为不与自身发生碰撞。这样做时,AI 不会相互推搡,而是相互滑行。这将缓解您遇到的这两个问题。

    转到编辑->项目设置->Physics2D->LayerCollisionMatrix

    您可以在此处禁用 AI 所在图层之间的碰撞。我建议向 AI 添加一个新层,这样它就不会只与自身发生碰撞,而是与所有其他对撞机正常运行。为确保它们不会发生冲突,请在此矩阵的行/列上找到图层并取消选中图层与自身相交的框。

    如果此替代解决方案不适合您,我可以推荐其他解决方案。

    【讨论】:

    • 您好,感谢您的回复。我相信我已经尝试过类似的东西。我试图尽可能地防止字符相互重叠。时刻保持他们之间的距离。我很想听听您的其他解决方案。
    • @AjilPappachan 抱歉,我不确定何时有时间解释,但this thread 可能会帮助您找到所需的内容。当我有更多时间时,我可以输入更深入的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多