围绕墙壁XNA操纵敌人

时间:2014-03-04 15:35:20

标签: c# xna-4.0

我将我的玩家放在屏幕上并且敌人产生了很好的效果并且朝向最接近的玩家。如果我添加一堵墙而且墙壁位于玩家和敌人之间,敌人会留在墙上,试图通过它。我怎么能这样做才能让敌人在到达墙壁之前绕墙转动呢?

2 个答案:

答案 0 :(得分:1)

有许多不同的算法可用于进行这种路径查找。在C#中查看{* 3}的A *算法。

答案 1 :(得分:0)

你需要一些AI算法来帮助你的敌人进行机动,我在这里不会详细讨论,但我会告诉你在哪里进一步观察。假设您的玩家只能到地图上的某些位置(如棋盘上的单元格),通过将地图视为带有节点和边缘的图形然后尝试找到2点之间的路径,可以轻松解决问题。

如果你懒得阅读算法并实施它们,一个非常简单的方法就是让敌人随机“找到”它的路径:如果它撞到墙壁,敌人会随机选择另一个方向继续。它有点像机器人每次撞到墙壁时都会旋转90度;它没有效率,但你会到达那里。

如果玩家可以移动到地图中的任何位置(换句话说,他们的位置不限于单元格),您需要一些算法来考虑墙的几何形状(有点像凸多边形)并找到每个物体周围的最短路径。