在上一章中,我们创建了地图单元之间的互相链接关系。现在,我们需要利用已经创建好的链接关系,重构一些我们之前需要复杂计算的方法。
首先回到HexMetrics.cs
脚本中,添加两个新的静态方法,用来获取地图单元的顶点位置信息。这样我们就可以将原本的Vector3[] corners
枚举设置为私有了。
HexMetrics.cs1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| private static Vector3[] corners = { … };
public static Vector3 GetFirstCorner(HexDirection direction) { return corners[(int)direction]; }
public static Vector3 GetSecondtCorner(HexDirection direction) { return corners[(int)direction + 1]; }
|
接下来回到HexMesh.cs
脚本中,在private void Triangulate(HexCell cell)
方法中,我们可以替换掉之前使用corners
枚举获取顶点的代码。
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
| private void Triangulate(HexDirection direction, HexCell cell) { Vector3 center = cell.transform.localPosition;
AddTriangle( center, center + HexMetrics.GetFirstCorner(direction), center + HexMetrics.GetSecondCorner(direction) );
… }
|
最后,我们新建一个Triangulate(HexCell cell)
方法,使用HexDirection方位来循环添加单个地图单元的6个点点位置信息。
HexMesh.cs1 2 3 4 5 6 7 8 9 10 11 12
|
private void Triangulate(HexCell cell) { for (HexDirection d = HexDirection.NE; d <= HexDirection.NW; d++) { Triangulate(d, cell); } }
|
这样,前置的一些准备工作就完成了,我们将之前直接使用corners
枚举的代码,替换为了使用HexDirection方位的代码,避免了一些复杂的计算,也保证了corners
的安全性。
接下来的章节中,我们将开始实现两个地图单元之间颜色混合的功能了。
Github代码