5-7 摄像机控制 调整层级结构

  在上一章中,我们对HexMesh.cs脚本中的代码进行了优化。现在我们能创建尺寸更大的地图了,但是摄像机依然只显示了几个地图单元的范围,这导致在游戏运行时我们没办法编辑摄像机事业之外的地图单元。为了能看清整各地图的全貌,那就需要摄像机有移动、旋转和焦距变化的功能,在接下来的章节中,我们步来实现。
  现在我们需要对摄像机的层级结构做出一些调整,新建一个空对象命名为Hex Map Camera,重置它的transform组件。为其新建一个子对象并命名为Swivel,然后在Swivel下创建一个子对象Stick。把主相机设置为Stick的子物体,然后重置其transform组件。如下图所示:

  Swivel的控制摄像机看向的角度,把它的Rotation默认设置为(45, 0, 0)。Stick则是用来控制摄像机的远近,设置Position默认坐标为(0, 0, -45)
  接下来我们需要一个脚本来控制这个组合装置,在根节点添加这个脚本并添加Swivel和Stick的引用。代码如下:

HexMapCamera.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using UnityEngine;

public class HexMapCamera : MonoBehaviour
{
//控制camera视角旋转
private Transform swivel;

//控制camera视角远近
private Transform stick;

void Awake()
{
//获取对应的实例
swivel = transform.GetChild(0);
stick = swivel.GetChild(0);
}
}

  这样我们就完成了摄像机层级的设置和创建脚本的准备工作了。在下一章中我们将添加调整摄像机视距的功能。

Github代码