不太懂自动寻路原理的,请先阅读下面的链接内容,我自己看了后是受益匪浅,本片文章就是其中最基础的Dijkstra算法。(Dijkstra怎么念?)
人工智能: 自动寻路算法实现(四、D、D*算法)
正文:
要实现的功能是:在棋盘类的2d地形中,绕过障碍找到目的地,从A到B。如下图:
- 先绘制地图,已知地图大小为 12x12,每个点的属性为:x值、y值、是否有障碍、是否被检测过、他的父系点。
创建点的类,命名Point:
public class Point
{
public int x;
public int y;
public bool barrier;
public bool Open;
public Point father;
}
创建地图:
Point[,] PointMap;
public Vector2Int Size;
void UnitMap()
{
PointMap = new Point[12,12];
Size.x = 12;
Size.y = 12;
for(int i = 0; i < 12; i++)
{
for(int j = 0; j < 12; j++)
{
PointMap[i,j] = new Point();
PointMap[i,j].x = i;
PointMap[i,j].y = j;
PointMap[i,j].barrier = false;
PointMap[i,j].Open = true;
}
}
//添加障碍
for(int i = 4; i < 8; i++)
{
int j = 4;
PointMap[i,j].barrier = true;
}
for(int i = 3; i < 8; i++)
{
int j