马上加入TC
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 剑仙十号 于 2021-9-9 08:18 编辑
A星寻路算法。单元格的中心点
第一步:采集地图数据:把小地图分成M横行,之后把每行 分成N列。根据小地图实际情况来,分好的单元格要粗点,不能太小。
.
这样小地图就分成了一个表。
在能通行的单元格,标上白色。
在不能通行的单元格,标上黑色。
第二步:每一个单元格,都是一个矩形区域。获取每个单元格的左上角座标,右下角座标,中心点座标。
.
首先获取小地图左上角的座标(Lx, Ly),右下角的座标(Rx, Ry)
在划分单元格时,每个横行距离是确定的。每个横行_划分竖列的距离,也是确定的。
W = (Rx-Lx)/N //单元格宽度
H = (Ry-Ly)/M //单元格高度
.
W2 = 单元格宽度/2 //半个单元格宽度
H2 = 单元格高度/2 //半个单元格高度
.
for(var i=0; i<M; i++)
for(var j=0; j<N; j++)
//名称:单元格MN,
//数组:单元格[M][N]
左上座标(Lx+W*j, Ly+H*i),
右下座标(Lx+W*(j+1), Ly+H*(i+1)),
中心点座标(Lx+W*j+W2, Ly+H*i+H2)
//这样可以把每个单元格,看成一个字符串变量,,把6个座标值和一个通行值,用","分割打包到字符串型变量。
//也可把每个单元格,看成一个int类型数组,,把6个座标值和一个通行值,储存到数组元素:arr座标[0],arr座标[1],arr座标[2],arr座标[3],arr座标[4],arr座标[5],arr座标[6]
end
end
第三步:获取角色的起点座标(当前座标)。用来确定角色_当前处在哪个单元格。
获取终点座标。再确定终点座标,处在哪个单元格。
第四步:套入 A星寻路算法,得到行走路径。
原创作品。转载请标明作者,标明出处.
这只是一种操作方法。楼主到简单游 观摩脚本。发现其它脚本作者,还有更好的操作方法:标记每个像素点:能通行/ 不能通行,再通过像素点寻路。
大神们不要藏着掖着。欢迎大家分享出’更好的操作方法,共同学习,共同进步。减少重复造轮子的时间。
|