Unity,让 AI 到 运行 一个变换路径点,还要远离玩家?
Unity, get AI to run to a transform waypoint, but also away from the player?
这是我第一次 post 在这里,如果我做错了什么,我深表歉意,我阅读了指南,希望不要这样!因此,让我更详细地介绍一下。
我目前正在为游戏编写 AI。我需要让 AI 做的是 运行 我在地图上放置的变换航路点(例如逃生),同时也不要选择会让他们 运行 过去的航路点吓到他们的玩家。
我真的不知道从哪里开始。我可以让 AI 运行 远离玩家,但不能到达特定的路点,我可以让 AI 到达特定的路点,但不能同时到达。基本上我所有的寻路都在那里,我只需要一种方法来选择合适的航路点。
任何帮助或至少在正确方向上的一点都会很有帮助。谢谢。
您可能想在 Google 中找到路径规划算法,看看哪些最适合您的要求。
想着想着,势场路径规划算法就想到了。它可以让你设定一个目标,同时避开障碍物(在这种情况下,玩家就是障碍物)。
您可以在这里阅读:http://www.cs.mcgill.ca/~hsafad/robotics/,并在互联网上搜索更多信息。
所以基本上,你有一张地图,地图上的每个点都有一个向量,向量应该引导你到达目标。靠近障碍物的矢量远离它。
当你有一个静态障碍物时这很好,因为你只计算力场,每个点的矢量,一次,你不需要继续这样做。但是对于你的情况,我猜玩家可以移动,如果玩家移动,那么你必须再次计算向量,所以在你的情况下你必须计算地图每个点的向量,每次用户移动,所以这不是一个理想的解决方案,但它可以帮助您入门。
这个算法还有局部最小值的问题:
但我认为我之前通过的网页中已经解决了这个问题(他们有一个示例实现)。
如果不行,您可能想在 Google 中搜索 "Path planning algorithms",甚至 "path planning with moving obstacles" 并将玩家视为障碍。
编辑
您可以尝试像这样轻松实现它:
在这些图像中,您可以看到绿色的 AI、红色的玩家和黄色的目标。每个方格中的数字是到球门的距离。
在第一张图片中,您会看到目标中的距离从 1 开始,每平方递增一个,就像那样。
第二张图是一样的,但是玩家周围的方块的价值更高,高多少你决定,但我是那样做的,如果它与玩家相邻+2,+1如果再远一点
现在机器人只需要选择数字较小的方格。所选路径以灰色突出显示。
最后一张图片是对值求和的结果。
在下一个示例中,您可以看到 AI 实际上向左移动了一点,因为它离玩家太近了。
所以上面发布的内容对我想要实现的目标来说有点过分了。我不得不根除我的整个寻路系统。
我的问题的一个更简单的解决方案是,我没有检查离 AI 最近的转换,而是检查离我的玩家最远的转换。这虽然不完美,但得到了我满意的结果,并且通常会使 AI 运行 远离玩家。
这是我第一次 post 在这里,如果我做错了什么,我深表歉意,我阅读了指南,希望不要这样!因此,让我更详细地介绍一下。
我目前正在为游戏编写 AI。我需要让 AI 做的是 运行 我在地图上放置的变换航路点(例如逃生),同时也不要选择会让他们 运行 过去的航路点吓到他们的玩家。
我真的不知道从哪里开始。我可以让 AI 运行 远离玩家,但不能到达特定的路点,我可以让 AI 到达特定的路点,但不能同时到达。基本上我所有的寻路都在那里,我只需要一种方法来选择合适的航路点。
任何帮助或至少在正确方向上的一点都会很有帮助。谢谢。
您可能想在 Google 中找到路径规划算法,看看哪些最适合您的要求。
想着想着,势场路径规划算法就想到了。它可以让你设定一个目标,同时避开障碍物(在这种情况下,玩家就是障碍物)。
您可以在这里阅读:http://www.cs.mcgill.ca/~hsafad/robotics/,并在互联网上搜索更多信息。
所以基本上,你有一张地图,地图上的每个点都有一个向量,向量应该引导你到达目标。靠近障碍物的矢量远离它。
当你有一个静态障碍物时这很好,因为你只计算力场,每个点的矢量,一次,你不需要继续这样做。但是对于你的情况,我猜玩家可以移动,如果玩家移动,那么你必须再次计算向量,所以在你的情况下你必须计算地图每个点的向量,每次用户移动,所以这不是一个理想的解决方案,但它可以帮助您入门。
这个算法还有局部最小值的问题:
但我认为我之前通过的网页中已经解决了这个问题(他们有一个示例实现)。
如果不行,您可能想在 Google 中搜索 "Path planning algorithms",甚至 "path planning with moving obstacles" 并将玩家视为障碍。
编辑
您可以尝试像这样轻松实现它:
在这些图像中,您可以看到绿色的 AI、红色的玩家和黄色的目标。每个方格中的数字是到球门的距离。
在第一张图片中,您会看到目标中的距离从 1 开始,每平方递增一个,就像那样。
第二张图是一样的,但是玩家周围的方块的价值更高,高多少你决定,但我是那样做的,如果它与玩家相邻+2,+1如果再远一点
现在机器人只需要选择数字较小的方格。所选路径以灰色突出显示。
最后一张图片是对值求和的结果。
在下一个示例中,您可以看到 AI 实际上向左移动了一点,因为它离玩家太近了。
所以上面发布的内容对我想要实现的目标来说有点过分了。我不得不根除我的整个寻路系统。
我的问题的一个更简单的解决方案是,我没有检查离 AI 最近的转换,而是检查离我的玩家最远的转换。这虽然不完美,但得到了我满意的结果,并且通常会使 AI 运行 远离玩家。