A星寻路干嘛的

用来计算玩家行进最短路径的

A星寻路原理

不断找周围的点,选出一个作为新的点作为起点,循环查找,直到找到终点

寻路消耗公式:

f(寻路消耗) = g(离起点距离)+ h(离终点距离)

g:斜边勾股定理
h: 曼哈顿街区算法,就是直接平面的横纵坐标相加

开启列表:

存储起点周围的点,存储前判断不是障碍,不在开启和关闭列表

关闭列表:

存储查找过程中新的起点,存储时判断是否是终点

格子对象的父对象

A星寻路可能不能一次就找到最短路径,所以关闭列表不是所有的格子都是最短路径的一部分,通过终点格子不断查找父对象才能确定最短路径

image-20231011105602045

广度优先遍历是从起始点开始从周围的点开始遍历,直到找到终点,周围的点是同时向外扩散查找的。

迪杰斯特拉算法:则是从起点周围的点中先从离自己最近的点作为下一个起点,不断遍历,直到找到终点。实际上已经是深度优先遍历了

A星算法则是在迪杰斯特拉的基础上,从周围的点选出下一个起点的条件除了离自己最近还要加上离目标点最近的条件。