4-6 平整地图单元表面
在上一章中,我们对采样范围进行了缩放。通过调整一个参数,控制彩色噪点图对地图的覆盖范围,解决了当一个地图单元高度变化的时候,它的矩形阶梯状连接区域顶点更加平滑,不会出现一些看起来很奇怪的三角面片了。不过我们仔细观察整个地图的时候,发现每个地图单元的六边形部分并不平整,这种效果并不是我们想要的。这一章我们将修复这个问题。
要让每个地图单元的六边形部分变得平坦其实很简单,只要我们在HexMesh.Perturb
方法中,对Y轴的坐标不进行扰动即可,代码如下:
1 | private Vector3 Perturb(Vector3 position) |
现在,所有地图单元与阶梯每一层的顶点在Y轴方向上都不会发生扰动了。但是要注意一点,现在地图中所有顶点的最大扰动距离都减小到了 $\sqrt {50} \approx 7.07$ ,并且只在XZ平面扰动了。不过这样的改动并没有什么不妥当的地方,反而实现了在扰动的同时不影响对每个地图单元坐标的识别。
现在我们就完成了平整每个地图单元表面的工作。但是经过观察我们发现,在Slope-Cliff连接类型的地图单元之间,有些三角形连接区域出现了破面的问题,而且取消了地图上所有顶点在Y轴的扰动也并不是一个好办法。这些问题我们在之后的章节来解决。