我正在开发一款iOS游戏(使用UIView),游戏中有一个随机生成的2D城市。我需要一种攻击性的人工智能,能够智能地规划路径找到玩家(避免与建筑物碰撞)。有人能指导我应该使用哪种算法来实现这个功能吗?
更新:我决定使用A*算法。我会在地图上创建一个网格,测试每个网格交点,如果该点位于建筑物内,我会使该点失效。攻击性的人工智能玩家将从当前位置移动到一个有效的网格点,该点更接近其目标(在其位置的特定半径内)。
回答:
您需要寻找一类称为路径查找算法的算法。有许多方法可以使用。
这里的经典算法是Dijkstra算法和A*搜索,它们可以引导一个对象从一个位置到另一个位置沿着最优路径。这些算法通过将2D世界建模为图,然后在该图中找到从对象的起始位置到目标位置的最短路径。这些算法在人工智能和路径查找中被广泛使用,我强烈建议您花时间阅读更多关于它们的资料。如果您愿意,可以在线找到一个关于A*搜索的详细教程。
如果您有许多不同的对象需要移动到目标而不互相干扰,您可能需要研究势场,它为多个对象接近目标提供了一个简单而灵活的框架。这种方法被伯克利“Overmind”星际争霸人工智能使用,并且经常用于机器人运动规划。从直觉上讲,这种方法的工作原理是为每个位置分配一个“势”值,然后让对象从高势移动到低势,直到它们到达目标。这种方法在实现上可能有点棘手,但一旦成功,通常会导致灵活、可定制且智能行为的人工智能。
希望这对您有帮助!