寻路算法

时间:2015-05-30 14:01:20

标签: algorithm

我是游戏编程的新手我目前正在使用统一的2D力量来重新制作2D游戏以便练习。所以我只是对一件事情感到困惑,到目前为止我游戏中的每个敌人都是愚蠢的(他们在预定义的路径上移动)但是这个敌人,外星人直升机,无论玩家去哪里都会飞行并跟随玩家。我的问题是我应该实现任何寻路算法吗?我曾经研究过A *,但是我试图弄清楚A *是否会对我的环境有所帮助,因为玩家将会移动并且敌人必须继续寻找最短的路径。我尝试为这个AI编写代码我的代码在没有障碍但是我的游戏有障碍时工作得很完美所以我想要一些有效的东西所以你认为我应该如何实现A *或任何其他算法呢?

1 个答案:

答案 0 :(得分:1)

关于AI,如果你的游戏中有障碍,你需要实现某种寻路。注意,仅采用最短块(节点)不是一种选择,因为这种算法不完整,即即使存在路径也可能找不到路径。想象一下a追踪b

(壁)(壁)(壁)

(免费)(免费)a(墙)b

(壁)(壁)(壁)

最短(最佳)路径是向左,因为上,下和右被阻止。然而,在下一步行动中,最好的举措是走向正确,因为它更接近。这就是a将被困在一个循环中的方式。所以是的,你是对的,你需要获得从ab的路径。它通常采用节点列表的形式。然后你只需选择列表中的head(也就是索引0处的元素)。

A *是您的完美选择。它完整​​,高效,甚至可以为您提供最短的路径。路径重新计算不应该是小游戏的问题。此外,如果游戏网格中的障碍物在游戏持续时间内是静态的,您可以预先计算路径并缓存它们。例如,从(x,y)到(x1,y1)的路径是[(a,b),(c,d)...]。因此,您可以将其存储在某种地图数据结构中,其中key是两个点 - start,target和value - 路径。这当然取决于你是否想要将敌人归类为其他敌人和其他游戏因素的障碍