【发布时间】:2014-04-03 14:31:27
【问题描述】:
在我用 C# XNA 编程的自上而下的小外星人游戏中,我有一些外星人和一些墙(以及其他东西)。我无法弄清楚如何引导外星人绕过墙壁。此刻他们像白痴一样撞上他们,滑行,如果他们戳到另一边,可能会到达目标。
这是我对这个问题的专业说明: problem http://imageshack.com/a/img829/6545/wsf4.jpg
那么直接,我的问题是:
- 如何检查外星人和目标之间是否有墙?
- 我如何引导它们沿着最短的路线四处走动?
欢迎算法/解释,c# 加分! :)
一些相同的假设有望使计算更容易: - 外星人和墙壁有AABB - 墙壁总是垂直或水平的
如有必要,我很乐意提供任何其他信息:)
【问题讨论】:
-
搜索“A* pathfinding unity”。当我在 Google 中输入它时,第一个结果似乎很有希望。
-
@ChrisDunaway 我的游戏是连续的,不是基于网格的。这个解决方案是否意味着我必须为了算法而在我的世界上建立一个网格?如果是这样,我可以简单地将vector2的坐标用作精细网格吗?如果不是,网格应该有多宽?
-
您可以在您想转弯的地方定义自己的航点(许多大型游戏使用区域而不是点)。使用 A* 算法,您将连接点/区域以为您的玩家创建路径。您可以通过检查您是否真的与原始直线路径中的墙壁发生碰撞来拆分 A* 路径查找和常规移动之间的功能(我没有这样做,但我建议“光线跟踪”)。因此,如果您检测到从玩家位置到目标位置的碰撞,请使用 A* 找到最佳路径,否则您只需朝该位置走。
-
您可以通过检查障碍物的碰撞来制作自己的,但您的敌人可能会被困在“U”形障碍物内。所以唯一的解决方案是 A* 路径...这里是 XNA 的一些示例:stevephillips.me/blog/implementing-pathfinding-algorithm-xna
标签: c# xna artificial-intelligence rectangles collision