这是我在这里发的第一篇帖子,如果有做错的地方请原谅,我已经阅读了指导方针,希望没有违反!所以让我直接详细说明一下情况。
我目前正在为一个游戏编写AI。我需要AI做的,是跑向我在地图上放置的一个变换路径点(比如一个逃生点),同时还要避免选择一个会让它们经过吓到它们的玩家的路径点。
我完全不知道该从哪里开始。我可以让AI远离玩家,但不是跑向特定的路径点;我也可以让AI到达特定的路径点,但不能同时做到这两点。基本上我的路径查找功能已经有了,我只是需要一种选择合适路径点的方法。
任何帮助或至少指引方向的建议都会非常有帮助。谢谢你。
回答:
你可能需要在Google上查找路径规划算法,看看哪些最适合你的需求。
考虑到这一点,我想到的是势场路径规划算法。它允许你设定一个目标,同时避开障碍物(在这种情况下,玩家就是一个障碍物)。
你可以在这里阅读相关内容:http://www.cs.mcgill.ca/~hsafad/robotics/,并在互联网上搜索更多信息。
基本上,你有一张地图,地图上的每个点都有一个向量,这个向量应该引导你到达目标。靠近障碍物的向量会远离它。
当你有一个静态障碍物时,这非常好,因为你只需要计算一次力场,每个点的向量,你不需要一直重复计算。但在你的案例中,我猜玩家是可以移动的,如果玩家移动了,那么你就必须重新计算向量,所以在你的案例中,你需要在用户每次移动时计算地图上每个点的向量,所以这不是一个理想的解决方案,但它可以让你开始。
这个算法还有局部最小值的问题:
但我认为我在前面提到的网页中已经解决了这个问题(他们有一个示例实现)。
如果这不行,你可能需要在Google上搜索“路径规划算法”,甚至“带移动障碍物的路径规划”,并将玩家视为一个障碍物。
编辑
你可以尝试像这样简单地实现它:
在这些图像中,你可以看到绿色的AI,红色的玩家,和黄色的目标。每个方块中的数字是到目标的距离。
在这第一张图像中,你可以看到距离从目标开始是1,每个方块增加1,就这样。
这第二张图像与第一张相同,但玩家周围的方块值更高,你决定增加多少,但我这样做了,如果它与玩家相邻,则+2,如果它稍微远一些,则+1。
现在机器人只需要选择数字最低的方块。选择的路径以灰色高亮显示。
这最后一张图像是将值相加的结果。
在这个下一个例子中,你可以看到AI实际上稍微向左移动,因为它离玩家太近了。