算法_六边形寻路算法

开启列表:需要考虑的节点

关闭列表:不再考虑的节点

第一步:

11为起点,8为终点;先把11加入到开启列表,然后遍历11周围的六个格子1、3、12、14、15、10,也放入开启列表并设置父节点为11,把11放入关闭列表

A星算法每个节点都有估值F=G+H

G:从起点移动到当前点的移动消耗,每移动一个格子,消耗1;

H:从当前点到终点的预估消耗,采用到终点的实际距离Vector3.Distance,得到3的估值F最低,最低代表最优先

第二步:

节点3作为当前节点,从开启列表中删除,然后添加到关闭列表中。

便利3周围的节点,跳过已经在关闭列表中的和不可通过的节点2和4。

如果遍历的节点例如12已经在开启列表中,对比从当前节点3走到节点12的G1值 =2和遍历节点12的G2值 = 1,如果G1>G2什么都不做,如果G1<G2则把节点12的父节点改为节点3,并且把G2改为G1。

再从开启列表中选取F值最低的,设为当前节点,重复。

节点3的相邻网格有1、12、16,节点1和12已经在开启列表中了,节点3的G估值1+从3走到12的移动消耗1 = 2,2>节点12的当前G估值,所以什么都不做(节点1类似)。现在开启列表中有1、10、15、14、12、16,计算F估值,节点16最小,所以再以节点16为当前节点,重复以上过程。最终得到路径11、3、16、13、8。

猜你喜欢

转载自blog.csdn.net/qq_35647121/article/details/121537418