C# 我怎样才能提高我的人工智能,使其不来回反弹

C# 我怎样才能提高我的人工智能,使其不来回反弹,c#,unity3d,rotation,C#,Unity3d,Rotation,所以我用的是unity3d,我有一个人工智能。它有一个始终面向角色的不可见矩形,如果AI和角色之间的距离小于最大距离,且不可见矩形未接触障碍物,则AI将追逐角色。如果AI同时接触玩家和障碍物,AI将继续巡逻。但问题是,有时如果球员处于某个位置,就会发生这种情况: AI没有碰到障碍物,因此AI向玩家移动。然后AI碰到了他身后的障碍物。因此,他正在触摸球员和障碍物,并被告知向后移动。只要他向后移动一点,他就不会碰到障碍物,而且距离小于最大距离,他会回到球员身边。这会永远重复,产生令人讨厌的连续循环

所以我用的是unity3d,我有一个人工智能。它有一个始终面向角色的不可见矩形,如果AI和角色之间的距离小于最大距离,且不可见矩形未接触障碍物,则AI将追逐角色。如果AI同时接触玩家和障碍物,AI将继续巡逻。但问题是,有时如果球员处于某个位置,就会发生这种情况:

AI没有碰到障碍物,因此AI向玩家移动。然后AI碰到了他身后的障碍物。因此,他正在触摸球员和障碍物,并被告知向后移动。只要他向后移动一点,他就不会碰到障碍物,而且距离小于最大距离,他会回到球员身边。这会永远重复,产生令人讨厌的连续循环

在你回答让矩形变短之前,我需要告诉你:我已经试过了,但是矩形没有检测到所有的碰撞,因为矩形的角度不同

更多信息:

  • 矩形始终正对着玩家

那么,我该如何解决这个问题呢?我非常感谢您的回答。

Unity有一个内置的人工智能导航系统。这可能是一个更好的长期解决方案。你可以设置探测范围等,它可以很好地自动探测障碍物

这里有一个很棒的教程:

有没有办法让Mac mesh agent不旋转?这就是我停止使用HIM的原因。您可以让占位符不可见对象进行导航,然后将另一个对象绑定到其位置(但不旋转)。很好,让占位符有一个类似的边界框。我应该使用不是nav网格有限状态机的AI吗?你可以同时使用两者。这样,它可以有一个“巡逻”状态和一个“追逐”状态等等。