Unity,让AI运行到变换航点,但也远离玩家?

时间:2015-07-03 18:36:59

标签: unity3d artificial-intelligence

这是我在这里发表的第一篇文章,如果我做错了什么就道歉,我读了指南,所以我希望不要!所以,让我更详细地了解它。

我目前正在为游戏编写AI。我需要让AI做的是运行到我放置在地图上的变换路点(例如逃生),同时也没有选择一个让它们跑过害怕它们的玩家的路点。

我不知道从哪里开始真的。我可以让AI远离玩家,但不是特定的航点,我可以让AI到达特定的航路点,但不能同时进行。基本上我的所有寻路都在那里,我只需要一种方法来选择合适的航路点。

任何帮助或正确方向上的一点至少会如此有用。谢谢。

2 个答案:

答案 0 :(得分:0)

您可能希望在Google中找到路径规划算法,看看哪些算法符合您的要求。

考虑到这一点,我想到了潜在场路径规划算法。它允许你设定一个目标,同时避开障碍物(在这种情况下,玩家将是一个障碍)。

您可以在此处阅读:http://www.cs.mcgill.ca/~hsafad/robotics/,并在互联网上搜索更多信息。

Image of the algorithm

所以基本上,你有一张地图,地图中的每个点都有一个向量,向量应该引导你到达目标。障碍物附近的矢量远离它。

现在,当你有一个静态障碍时这很好,因为你只计算力场,每个点的矢量,一次,你不需要继续这样做。但是对于你的情况,我猜玩家可以移动,如果玩家移动,那么你必须再次计算向量,所以在你的情况下你必须在每次用户移动时计算地图每个点的向量,所以这不是一个理想的解决方案,但它可能会让你开始。

该算法还存在局部最小值的问题:

S = starting point; T = target

但我认为这是我之前通过的网页解决的(他们有一个示例实现)。

如果不这样做,您可能希望在Google中搜索“路径规划算法”,甚至可能在“移动障碍物的路径规划”中进行搜索,并将玩家视为障碍。

修改

你可以尝试像这样轻松地实现它:

在这些图像中,您可以看到绿色的AI,红色的玩家和黄色的目标。每个方格中的数字是到目标的距离。

First step

在第一张图片中,您会看到距离从目标中的1开始,每个正方形增加1,就像那样。

Second step

这第二张图片是一样的,但是玩家周围的方块值越高,你决定的高出多少,但我就这样做了,如果它与玩家相邻则为+2,如果它是+1则为+1再远一点。

现在机器人只需要选择数字较小的方块。所选路径以灰色突出显示。

Result

最后一张图片是对值进行求和的结果。

在下一个例子中,您可以看到AI实际上向左移动了一点,因为它离玩家太近了。

Example

答案 1 :(得分:0)

所以上面发布的内容对于我想要实现的目标来说有点太多了。我不得不根除它的整个寻路系统。

我问题的一个更简单的解决方案是,我检查了距离我的播放器最远的一个,而不是检查最接近人工智能的转换。这虽然并不完美,但我得到了满意的结果,并且通常会让AI远离玩家。