1-4 正六边形地图单元的排列方式
上一章中,我们将每个地图单元的坐标显示了出来,这样能更加方便的在Game窗口中查看每个地图单元的坐标信息,方便之后的调试和修改。但是,现在所有的地图单元,是按照正方形地图系统的模式排列的,而整六边形地图系统中,地图单元的排列如下图所示:
通过观察上图发现,水平方向上,两个正六边形地图单元的距离为2倍的内切圆半径。垂直方向上,两个正六边形地图单元的距离为1.5倍的外接圆半径。根据观察结果修改代码如下:
1 | private void CreateCell(int x, int z, int i) |
将正方形地图单元的间距修改为正六边形地图单元的间距后,运行效果如下图:
通过观察正六边形元素的排列,我们还发现,上下两行的地图元素,并不像正方形元素那样上下紧邻并对齐的,而是会错开一段距离,而且这段距离会随着行数的增加而增加。第0行偏移量为0,第1行偏移量为1倍的内切圆半径,第2行偏移量为2倍的内切圆半径。代码如下:
1 | //增加了Offset,每一行偏移量为行数*内切圆半径 |
运行结果如下图所示:
通过观察运行结果可以发现,地图形状为一个菱形,而不是矩形。为了之后调试和使用,这里要将排列方式变为矩形。可以通过去掉偶数行的偏移量来达到目的。也就是每个偶数行的地图单元,都不产生偏移,而每个奇数行的地图单元向右偏移内切圆半径的距离。修改代码如下:
1 | //上一步中,生成的Cell会排列成菱形 |
修改后运行结果如下图:
现在,我们就完成了正六边形单元的排列。接下来的一章中,要修改地图单元的外形,将正方形外观修改成正六边形外观,使其在视觉效果上变为正六边形地图单元的外观。