重温 A* 算法
A* 算法用于寻找从开始点至目标点之间的一条可达路径.A* 算法在寻路过程中会使用一种简单的方法来评估当前节点与目标点之间的距离.通过将已经经过的路径距离和预估的路径距离相加,算法会首先扩展搜索那些最有..."前途"(与目标点距离最短)的节点.A* 算法的寻路方式保证其一定可以找到最优路径.
?...分帧寻路.如果你的游戏并不需要在一帧中就获取完整的寻路结果,那么我们就可以使用分帧寻路来优化 A* 算法.我们可以设置一个循环上限,如果 A* 算法在该循环限制内没能完成寻路,我们便暂停当前寻路,并在下一帧继续...下一步就是创建 firstNode 节点指针,并将其加入开放列表中.我使用了 DistanceTo 函数来计算节点的启发式距离(到目标点的评估距离,即节点的 H 值).
?...CalculateFopt 是一个用来计算节点 G 值 和 H 值 的函数,方法上主要是检查了节点间是对角距离还是水平(或垂直)距离.我们需要做的最后一件事是,当我们搜索到目标点后,如何回溯节点直到返回开始点