【问题标题】:Unity, get AI to run to a transform waypoint, but also away from the player?Unity,让 AI 跑到一个变换航路点,还要远离玩家?
【发布时间】:2015-07-03 18:36:58
【问题描述】:

这是我在这里的第一篇文章,如果我做错了什么,我深表歉意,我阅读了指南,所以我希望没有!所以让我直接进入更详细的内容。

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

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

任何帮助或指向正确方向的观点至少都会很有帮助。谢谢。

【问题讨论】:

  • 你能发布你的代码吗?
  • 我还没有开始为这个问题写任何东西,因为我不知道从哪里开始。我可以告诉你我的 AI 是如何设置的。基本上,我输入了一个目标变换,它就会到达那里。这里的所有都是它的。我的问题在于选择一个变换点背后的逻辑,让 AI 去那个远离玩家的地方,所以看起来他们正在逃跑,但是到一个合理的地方,比如出口或寻求帮助的电话(标出我需要为目标选择的转换)。

标签: unity3d artificial-intelligence


【解决方案1】:

您可能想在 Google 中查找路径规划算法,看看哪些算法适合您的需求。

想到这里,我想到了潜在场路径规划算法。它允许您设定目标并同时避开障碍物(在这种情况下,玩家将成为障碍物)。

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

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

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

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

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

如果不行,你可能想在谷歌搜索“路径规划算法”,甚至可以搜索“带有移动障碍物的路径规划”,将玩家视为障碍物。

编辑

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

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

在第一张图片中,您可以看到距离在目标中从 1 开始,然后每平方增加 1,就像这样。

第二张图也一样,但是玩家周围的方块值更高,高多少你自己决定再远一点。

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

最后一张图片是对这些值求和的结果。

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

【讨论】:

  • 我希望我不必深入研究,因为我正在使用“A* 寻路项目”作为寻路解决方案。我希望有一个更高级别的解决方案,我可以选择一个远离玩家的好的、预定义的点(变换)。但是非常感谢你的详细帖子。如果没有人可以为此提供更高级别的解决方案,这绝对是一种选择。 :)
  • @WilliamPark 我编辑了帖子,看看图片,也许这更容易实现和思考。
  • 绝对惊人的帮助。非常感谢。
【解决方案2】:

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

我的问题的一个更简单的解决方案是,我不是检查最接近 AI 的变换,而是检查离我的玩家最远的变换。虽然这并不完美,但得到了我很满意的结果,并且通常会使 AI 远离玩家。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 2018-12-16
    • 2020-03-20
    • 2015-01-17
    相关资源
    最近更新 更多