1:效果如图
2:思路:采用的是广度优先遍历
3:算法代码如下:
调用接口:
AStar aStar = new AStar();//定义A*类
aStar.Init(MapTool.mapWidth, MapTool.mapHeight, map);//初始化接口
List<mapPosition> path = aStar.Path(from, to);//生成最短路径接口
算法代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AStar
{
public int witdh; //二维表宽度
public int heigh; //二维表高度
private bool[,] map; //二维表 true代表可走 false代表不可走
private bool[,] mapTemp;
private bool isSearchOver = false;
private mapPosition targetPosition;
/// <summary>
/// 初始化
/// </summary>
/// <param name="witdh">二位表宽度</param>
/// <param name="heigh">二维表高度</param>
/// <param name="map">二维地图</param>
public void Init(int witdh, int heigh, bool[,] map)
{
this.witdh = witdh;
this.heigh = heigh;
this.map = map;
}
/// <summary>
/// 计算最短路径
/// <