星搜索算法介绍
更新时间:2019-04-20 05:33 浏览:80 关闭窗口 打印此页
星搜索算法介绍
当你制作游戏时,你想将它们移动到一个特定的地方,避开墙壁和障碍物,并创造一些游戏中的怪物和英雄?
如果是这样,请看一下本教程,我们将向您展示如何使用A-Star Pathfinding算法实现它。
互联网上有很多关于A星搜索算法的文章,但大多数都是针对已经理解基本原理的高级开发人员。
本教程从最基本的原则开始。
我们将逐步解释A-star路线搜索算法。有很多数字和例子。
无论您使用何种编程语言或操作平台,本教程都很有用,因为它说明了非编程语言级别的算法原理。
然后有一个教程,展示如何在iPhone游戏Cocos 2D中实现A-star算法。
找到含有咖啡因饮料和美味小吃的最短途径。
]
先锋猫
想象一下,有一种猫想要找到骨头的方法。
为什么有些猫需要骨头?
你可以这么认为。
在这个游戏中,这是一只荒谬的猫,他想从狗身上移除骨头,以免被咬伤!
]
想象一下,下图中的猫现在想要找到骨骼的最短路径。
不幸的是,猫不能从目前的位置直接进入他们的骨头。因为墙挡住了路。那不是鬼猫。
游戏中的猫也很懒,总想找到最短的路径,所以回家探望你的女朋友时不要太累:-)
但是,如何创建算法来计算猫想要选择的路径?
Star的算法救了我们!
简化搜索区域
路径搜索的第一步是使用易于管理的搜索区域来简化它。
如何处理取决于游戏。
例如,您可以将搜索区域划分为像素,但基于盒子的游戏的粒度太高(不是必需的)。
相反,使用正方形(正方形)作为路径搜索算法的单位。
其他类型的形状(如三角形和六边形)也是可能的,但正方形是最简单的,最适合我们的需要。
以这种方式划分,搜索区域可以通过二维地图大小阵列容易地表示。
因此,对于25 * 25块大小的映射,搜索区域是625个方阵。
如果地图被划分为像素,则搜索范围是640,000个正方形的矩阵(?1平方是32 * 32像素)。
现在让我们将区域划分为几个正方形,以根据当前区域表示搜索空间(在这个简单的例子中,7 * 6个正方形= 42个正方形)。
打开列表和关闭列表
现在您已经创建了一个简单的搜索区域,让我们分析一下A-star算法的工作原理。
除了懒惰,我们的猫没有好记忆,所以我们需要两个列表。
一个块(称为打开列表),用于注册所有被认为可以找到最短路径的块
永远不会被考虑的块(成为一个封闭的列表)
猫首先将当前位置添加到关闭列表(此起点称为A)。
接下来,将当前位置附近的所有传递小方块添加到打开列表中。
下图显示了猫在特定位置的位置(绿色代表打开的列表)。
现在猫需要决定哪种选择是最短的方式,但你怎么做呢?
在A星路径搜索算法中,通过给每个块提供总值来将该值称为路径增量。
让我们看看它是如何工作的!
路径增量
给每个块一个G + H值和一个值。
G是从起点A到当前正方形的移动量。
因此,从起点A到相邻小方块的移动量是1,并且该值随着距起点的距离的增加而增加。
H是从当前方块到目标点(这称为点B,表示骨骼)。
预计移动量。
这通常被称为访问,因为我们不知道移动量是否只是估计。