2-12 优化三色混合区域
在上一章中我们完成了双色混合区域连接的优化,现在来继续完成三色混合区域。根据上一张的思路,三色混合区域依然是在HexMesh.TriangulateConnection
方法中处理。
1 | private void Triangulate(HexDirection direction, HexCell cell) |
这里注意,在AddTriangle(v2, v4, v2);
中,最后的v2
并不是三色混合区域中最后的一个顶点位置。我们应该通过第二个相邻地图单元的位置来计算得出这个顶点的位置。
1 | private void Triangulate(HexDirection direction, HexCell cell) |
修改完代码之后,虽然视觉效果上基本没有问题了。但是通过分析代码,其实可以发现现在的三色混合区域是有重叠的。为了去掉重叠的三色混合区域,只需要在NE和E方向生成三色混合区域即可。
1 | private void Triangulate(HexDirection direction, HexCell cell) |
修改代码之后,我们就完成了所有连接区域的优化工作。而且也解决了之前边缘处颜色混合视觉效果不正确的问题。在之后的章节中,我们要给现在的地图增加高低差的功能,让地图具有更多的细节和变化。