A*寻路相信很多人都听说过,也是比较基本的一种算法,具体概念我就不多说了,网上查找一下一大堆,我直接贴上我的A*应用方法,以下是地图:
接下来是地图数组:
using UnityEngine;
using System.Collections;
public static class MapsArray {
public static int[,] MazeItem = new int[15, 10] //初始化迷宫
{
{1,1,1,1,1,1,1,1,1,1},
{1,0,1,1,1,0,0,0,1,1},
{1,0,0,1,1,0,1,0,1,1},
{1,0,0,0,0,0,1,0,1,1},
{1,1,0,1,0,1,1,0,1,1},
{1,1,0,1,0,0,0,0,1,1},
{1,0,0,0,1,1,1,0,1,1},
{1,1,0,0,0,0,0,0,1,1},
{1,1,0,1,1,1,0,0,0,1},
{1,1,0,0,1,1,1,0,1,1},
{1,1,1,0,0,0,0,0,1,1},
{1,1,1,1,0,0,1,0,1,1},
{1,0,0,0,0,1,1,0,0,1},
{1,0,1,1,1,0,1,1,0,1},
{1,1,1,1,1,1,1,1,1,1}
};
}
接下来是A*算法的使用代码:
using UnityEngine;
using System.Collections;
using System;
using System.Collections.Generic;
public enum Grids3DType {
Normal,
Obstacle,
Start,
End
}
public class Grids_3D : IComparable
{
public int x;
public int y;
public int G;
public int F;
public int H;
public Grids_3D fatherMode;
public Grids3DType gridsType;
public int CompareTo(object obj)
{
Grids_3D grid = (Grids_3D)obj;
if (this.F