Unity,让AI既跑向变换路径点,又避开玩家?

这是我在这里发的第一篇帖子,如果有做错的地方请原谅,我已经阅读了指导方针,希望没有违反!所以让我直接详细说明一下情况。

我目前正在为一个游戏编写AI。我需要AI做的,是跑向我在地图上放置的一个变换路径点(比如一个逃生点),同时还要避免选择一个会让它们经过吓到它们的玩家的路径点。

我完全不知道该从哪里开始。我可以让AI远离玩家,但不是跑向特定的路径点;我也可以让AI到达特定的路径点,但不能同时做到这两点。基本上我的路径查找功能已经有了,我只是需要一种选择合适路径点的方法。

任何帮助或至少指引方向的建议都会非常有帮助。谢谢你。


回答:

你可能需要在Google上查找路径规划算法,看看哪些最适合你的需求。

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

你可以在这里阅读相关内容:http://www.cs.mcgill.ca/~hsafad/robotics/,并在互联网上搜索更多信息。

算法的图像

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

当你有一个静态障碍物时,这非常好,因为你只需要计算一次力场,每个点的向量,你不需要一直重复计算。但在你的案例中,我猜玩家是可以移动的,如果玩家移动了,那么你就必须重新计算向量,所以在你的案例中,你需要在用户每次移动时计算地图上每个点的向量,所以这不是一个理想的解决方案,但它可以让你开始。

这个算法还有局部最小值的问题:

S = 起点;T = 目标

但我认为我在前面提到的网页中已经解决了这个问题(他们有一个示例实现)。

如果这不行,你可能需要在Google上搜索“路径规划算法”,甚至“带移动障碍物的路径规划”,并将玩家视为一个障碍物。

编辑

你可以尝试像这样简单地实现它:

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

第一步

在这第一张图像中,你可以看到距离从目标开始是1,每个方块增加1,就这样。

第二步

这第二张图像与第一张相同,但玩家周围的方块值更高,你决定增加多少,但我这样做了,如果它与玩家相邻,则+2,如果它稍微远一些,则+1。

现在机器人只需要选择数字最低的方块。选择的路径以灰色高亮显示。

结果

这最后一张图像是将值相加的结果。

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

示例

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注