4-11 封装顶点计算方法
在上一章中,我们完成了地图单元与矩形连接区域的的连接。在我们新增代码的时候发现,计算六边形一条边上新增顶点的这部分代码,是可以单独抽象出来,组成一个新的方法,方便在之后计算顶点时调用。
我们创建一个新的脚本EdgeVertices.cs
,其中是一个结构体,包含了4个顺时针排列在六边形一条边上的顶点。代码如下:
1 | using UnityEngine; |
接着再为这个结构体添加一个构造函数,用来计算每个顶点的位置信息。代码如下:
1 | public struct EdgeVertices |
回到HexMesh.cs
脚本中,我们创建一个方法,通过4个顶点位置,对六边形内每个三角面片进行细分。代码如下:
1 | public class HexMesh : MonoBehaviour |
再创建一个方法,用来创建两个地图单元之间,经过细分后的连接区域。代码如下:
1 | public class HexMesh : MonoBehaviour |
完成以上步骤后,我们就可以简化Triangulate
方法了。代码如下:
1 | private void Triangulate(HexDirection direction, HexCell cell) |
最后,我们要修改TriangulateConnection
方法,使用TriangulateEdgeStrip
来创建细分后的连接区域。代码如下:
1 | //这里不再使用单个顶点,而直接使用EdgeVertices进行顶点计算 |
至此,我们就完成了新方法的封装,这样在细分六边形三角面片、构建双色连接区域的时候,就不用在方法内部计算每个顶点的位置了。接下来的一章中,我们在这个基础上,完成阶梯状连接区域的细分。