Unity A*寻路算法(人物移动AI)

最近闲来无事,从网上看了一些大神的心得,再融合自己的体会,写了一个简单点的寻路算法,废话不多说,直接上代码

<Grid>


using UnityEngine ;
using System . Collections ;
using System . Collections . Generic ;
using System ;
/// <summary>
/// 格子类型
/// </summary>
public enum GridType
{
        //正常类型
        Normal ,
        //障碍物类型
        Obstacle ,
        //起点类型
        Start ,
        //终点类型
        End
}
/// <summary>
/// 格子类(实现IComparable方便排序)
/// </summary>
public class Grid : IComparable
{
        //格子坐标x-y
        public int x ;
        public int y ;
        //格子A*三属性f-g-h
        public int f ;
        public int g ;
        public int h ;
        //格子类型
        public GridType type ;
        //格子的归属(父格子)
        public Grid parent ;
        //构造赋值
        public Grid ( int x , int y )
       {
               this . x = x ;
               this . y = y ;
       }
        /// <summary>
        /// 实现排序接口方法
        /// </summary>
        /// <returns> The to. </returns>
        /// <param name="obj"> Object. </param>
        public int CompareTo ( object obj )
       {
               Grid grid = ( Grid ) obj ;
               if ( this . f < grid . f ) {
                      //升序
                      return -1;
              }
               if ( this . f > grid . f ) {
                      //降序
                      return 1;
              }
               return 0;
       }
}


<MyAStar>


using UnityEngine ;
using System . Collections ;
using System . Collections . Generic ;
public class MyAStar : MonoBehaviour
{
        /// <summary>
        /// 单例脚本
        /// </summary>
        public static MyAStar instance ;
        // 白色格子
        public GameObject reference ;
        //格子数组
        public Grid [,] grids ;
        //格子数组对应的参考物(方块)对象
        public GameObject [,] objs ;
        // 开启和关闭列表
        public List < Grid > openList ;
        public List < Grid > closeList ;
        //目标点坐标
        public int targetX
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值