在Unity中如何避免两个NavMeshAgent互相推挤?

10
在我的游戏中,所有玩家和怪物角色都有一个NavMeshAgent组件,当一个角色移动到另一个角色时,它会推开第二个角色。
我阅读了Unity的NavMeshAgent文档,发现问题受到“Obstacle Avoidance Type”和“Avoidance Priority”的影响。我已经尝试过这个方法,但仍然无法得到完美的解决方案。我需要角色不要互相推开,并且仍然将其他角色视为障碍物。
请给我一些使用NavMeshAgent的建议,并解决这个问题。谢谢。
3个回答

5

3
我知道这是一个老问题了,但最近我遇到了同样的问题并找到了解决方案,所以我决定将我的修复方法发出来,以防其他人也遇到同样的问题。
基本上,在NavMeshAgent组件中有一个名为Obstacle Avoidance的部分,其中包含一个名为Quality的属性。解决方法是将Quality设置为'None'。根据Unity的描述,“更高质量的避让会减少代理人重叠的几率,但它比低质量避让计算速度要慢。”换句话说,将其设置为'None'将停止代理人相互推挤。

enter image description here

这意味着如果玩家和敌人处于相同的Agent Type下,敌人将会避开玩家。您可以做的是检查敌人和玩家之间的距离,并设定一个范围,让敌人知道玩家是否足够接近以进行攻击。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接