6-15 河流的起点与终点
在上一章中,我们完成了当河流笔直穿过地图单元时,河道的三角构建。在这一章中我们先来分析如何构建河流的起点与终点。这一章中我们来完成河流起点与终点的构建。
河流的起点和终点的构建,与之前构建地图单元的方式有很大的区别。所以我们需要创建一个专门构建地图单元内河流起点与终点的方法,如果在一个地图单元内存在河流的起点或终点,那就调用这个方法进行构建。代码如下:
1 | private void Triangulate(HexDirection direction, HexCell cell) |
我们希望河流在地图单元的中心开始或终止,这里还是使用中位线的方式将其分为两个部分,我们先构建中位线到地图单元边缘的部分。这里要注意,由于起点或终点是要向地图单元的中心点聚拢的,所以我们这里依然使用各个顶点均分中位线的方式,来计算每个顶点的位置。代码如下:
1 | public class HexMesh : MonoBehaviour |
接下来,可以构建中位线到地图单元中心的部分,这里已经获得了中位线上的5个顶点位置了,所以直接使用对应的方法进行构建即可。代码如下:
1 | private void TriangulateWithRiverBeginOrEnd(HexDirection direction, HexCell cell, Vector3 center, EdgeVertices e) |
至此,我们就完成了有河流起点或重点的地图单元内河道的构建。接下来的章节中,我们来分析如何构建地图单元内有拐弯的河流。
[Github代码](