在上一章中,我们完成了SSF类型的三角形连接区域阶梯化,不过SSF类型还存在两种变体,如下图所示:

之前的普通SSF连接类型中,两个连接类型为Flat的地图单元,它们相较另一个地图单元,都会高出一个单位。变体的情况其实是正好反过来的。两个连接类型为Flat的地图单元,比另外一个地图单元,都低一个单位,这样也能组成SSF形式的连接。那么我们就这种情况,在TriangulateCorner方法中进行判断,如果符合SSF变体的情况,我们也试用阶梯化三角形连接区域进行构建。代码如下:
HexMesh.cs1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| private void TriangulateCorner( Vector3 bottom, HexCell bottomCell, Vector3 left, HexCell leftCell, Vector3 right, HexCell rightCell) { …
if (leftEdgeType == HexEdgeType.Slope) { … if (rightEdgeType == HexEdgeType.Flat) { TriangulateCornerTerraces(left, leftCell, right, rightCell, bottom, bottomCell); return; } } if (rightEdgeType == HexEdgeType.Slope) { if (leftEdgeType == HexEdgeType.Flat) { TriangulateCornerTerraces(right, rightCell, bottom, bottomCell, left, leftCell); return; } } … }
|
仔细观察代码,当下方和右侧的两个地图单元连接关系为Flat时,我们就要对左侧的地图单元三角形连接区域进行梯形构建。相反的另一种情况也类似。

现在,两个相邻地图单元高度相差1的话,他们之间的矩形连接区域和三角形连接区域,视觉效果都完全符合预期。现在的问题还存在于两个相邻地图单元高度差大于1的情况。他们之间的三角形连接区域还是使用之前的方式。在下面的章节中,我们将会一步一步来解决这些问题。
Github代码