一、关于正方形转化为六边形问题。
延伸上次日志的方法,先生成一个矩形,然后通过简单地取中点和取四分点,构筑正六边形。然而遇到的问题是,高度数组是一个由离散的点组成,这些点组成的矩形肯定无法构筑一个正六边形。所以,直接生成矩形是无法做到的,只能还是回到将高度数组分成若干个小的正方形。
搜索一下“正方形内作正六边形”的问题,大概能给的答案是如下:
然而这并不是正六边形。想象一下,如果把左右两条边拉长适当的距离,内部的六边形肯定可以变成正的,实际上拉长至原来 2/√3 倍即可。令人兴奋的是,Unity的地形中,虽然高度图分辨率已经是固定的2^n+1,但地形的长和宽是任意设置的,所以生成高度图的时候完全用正方形来构筑六边形,后期将地形长宽比例设置成2:√3即可得到正六边形。
二、构成地图
按照刚才的方法所