【发布时间】:2015-05-02 18:33:00
【问题描述】:
我有一个 XNA 僵尸生存游戏,玩家必须在建筑物中坚持下去,然后僵尸会一波又一波地向他们袭来。僵尸最初会瞄准路障以接近玩家,然后在破坏路障后瞄准玩家。
这是迄今为止的游戏图像。墙壁(坚不可摧)为黑色/灰色,路障为棕色:
更新:到目前为止,我在对寻路的理解方面取得了很大进步,但仍然没有骰子。上图是我当前的网格/节点系统。
如您所见,在“竞技场”之外,航点很少。僵尸需要到达道路上最近的航路点,然后他们才能前往障碍物(我知道,最上面的道路仍然需要障碍物)。
一旦他们打破了障碍,他们需要使用寻路来找到并跟随玩家绕过墙壁和障碍物,因此会有更多的路点。
我目前将每个网格点存储在 Microsoft.XNA.Framework.Point 数组中。我已经非常努力地使用this article 来实现这一点,我已经引用了很多,但是我的系统和他的系统完全不同,我找不到让它工作的方法。例如,文章的系统在每个方向上查找一个网格单元以查找节点邻居。由于竞技场外的航点附近没有节点邻居,因此系统失败。
XNA 是一个垂死的框架,没有关于寻路的可用文章/教程,所以我真的需要一些帮助。
【问题讨论】:
-
A* 可能仍然是要走的路。最简单的方法是在特定位置(例如门中间、墙角)添加自己的航点,而不是尝试处理每个像素。
-
如果你想要“简单”,你可以试试red3d.com/cwr/steer,但是你可能会发现转向行为只对眼前的障碍有用,而不是复杂的长期目标,比如绕墙移动;进入一扇门;穿过两个房间;在这个过程中找到一扇门。忘记楼梯。 A* 会做所有这些事情。转向确实有路径跟随,但是你需要很遗憾地制定一条动态路径
标签: c# xna path-finding