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,
左上座标(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星寻路算法,得到行走路径。
调整人物朝向,以单元格中心点_为节点,从一个单元格中心点 移动到另一个单元格中心点。
如此循环,到达目标单元格,目标座标点,break.
原创作品。转载请标明作者,标明出处.
这只是一种操作方法。欢迎大家分享’更多的操作方法,共同学习,共同进步.
第一步:采集地图数据:把小地图分成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,
左上座标(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星寻路算法,得到行走路径。
调整人物朝向,以单元格中心点_为节点,从一个单元格中心点 移动到另一个单元格中心点。
如此循环,到达目标单元格,目标座标点,break.
原创作品。转载请标明作者,标明出处.
这只是一种操作方法。欢迎大家分享’更多的操作方法,共同学习,共同进步.