6-11 设置河床高度

  在上一章中,我们为地图单元添加了一个新的顶点,使连接区域从以前的3个矩形构成,变为4个矩形构成。新增的顶点其实就是河床的最低点。在这一章中,我们将设置这个顶点在垂直方向上的坐标。使其成为河床最低点。
  首先现在的地图单元中的每个顶点,都是经过扰动的。但是我们希望河床最低点的顶点不会扰动,这样就能避免因为高低起伏的随机,让河流的某些地方看起来想逆流的情况。同时,还需要让这个顶点足够低,即使其两侧的顶点有随机扰动,也会和自身高驰一定的高度距离,为水面流出足够的空间。
  我们回到HexMetrics.cs脚本中,在这里定义一个常量,用来表示河道最低点的偏移量。代码如下:

HexMetrics.cs
1
2
3
4
5
6
7
public static class HexMetrics
{
//河道最低点的偏移量
public const float streamBedElevationOffset = -1f;


}

  接着,我们回到HexCell.cs脚本中添加一个属性,使用之前定义的常量来计算当前地图单元河床顶点的高度。代码如下:

HexCell.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class HexCell : MonoBehaviour
{
//河床最低点的高度
public float StreamBedY
{
get
{
//通过偏移常量,计算出当前cell对应河床顶点的实际高度
return (elevation + HexMetrics.streamBedElevationOffset) * HexMetrics.elevationStep;
}
}


}

  这样我们就通过一个常量,设置好了河床最低点的偏移量。并且创建了一个方法以供地图单元或连接区域进行构建的时候调用。接下来的一章中,我们将使用这个方法构建带河道的连接区域。

Github代码