Unity3d利用A*寻路算法实现寻路模拟

原文地址:blog.liujunliang.com.cn

这里我先引用一篇详细文章来介绍A*算法

本文源码链接:点击打开链接

文章内容如下

简易地图

 

如图所示简易地图, 其中绿色方块的是起点 ( A 表示), 中间蓝色的是障碍物, 红色的方块 ( B 表示) 是目的地. 为了可以用一个二维数组来表示地图, 我们将地图划分成一个个的小方块.

二维数组在游戏中的应用是很多的, 比如贪吃蛇和俄罗斯方块基本原理就是移动方块而已. 而大型

 游戏的地图, 则是将各种"地貌"铺在这样的小方块上.

寻路步骤

1. 从起点开始把它作为待处理的方格存入一个"开启列表", 开启列表就是一个等待检查方格

 的列表.

2. 寻找起点周围可以到达的方格将它们放入"开启列表", 并设置它们的"父方格" A.

3. 从"开启列表"中删除起点 A, 并将起点加入"关闭列表", "关闭列表"中存放的都是不需要再次检查的方格

 

图中浅绿色描边的方块表示已经加入 "开启列表" 等待检查. 淡蓝色描边的起点 A 表示已经放入

 "关闭列表" , 它不需要再执行检查.

"开启列表" 中找出相对最靠谱的方块, 什么是最靠谱? 它们通过公式 F=G+H 来计算.

F = G + H 

G 表示从起点 A 移动到网格上指定方格的移动耗费 (可沿斜方向移动).

 H 表示从指定的方格移动到终点 B 的预计耗费 (H 有很多计算方法, 这里我们设定只可以上下左右移动).


我们假设横向移动一个格子的耗费为 10, 为了便于计算, 沿斜方向移动一个格子耗费是 14. 为了

更直观的展示如何运算 FGH, 图中方块的左上角数字表示 F, 左下角表示 G, 右下角表示 H. 看看是否跟你心里想的结果一样?

"开启列表

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值