1. 输入获取与移动逻辑
教程通过`Input.GetAxis`获取输入信号,实现摄像机的平滑移动。例如,监听水平Horizontal和垂直Vertical轴输入,将输入值与移动速度结合,通过`Transform.Translate`方法更新位置。核心代码框架如下: ```csharp public float moveSpeed = 5f; void Update() { float horizontal = Input.GetAxis("Horizontal"); float vertical = Input.GetAxis("Vertical"); Vector3 movement = new Vector3(horizontal, 0, vertical) * moveSpeed * Time.deltaTime; transform.Translate(movement); } ``` 其中,`Time.deltaTime` 是关键,它确保移动速度与帧率关,避免不同设备上出现移动快慢差异。2. 坐标系选择:World vs Self
使用`Transform.Translate`时,需意坐标系参数`Space.World`世界坐标与`Space.Self`局部坐标的区别。世界坐标下,移动方向固定X轴左右,Z轴前后;局部坐标下,移动方向以摄像机自身朝向为准如摄像机旋转后,按W键会沿当前镜头前方移动。教程根据需求选择,第三人称视角常用局部坐标,上帝视角常用世界坐标。 三、跟随目标:摄像机与角色的绑定 若需摄像机跟随玩家角色如第三人称游戏,教程提供了“偏移量跟随法”:提前设定摄像机与目标的相对偏移如角色后方10米、上方5米,在脚本中实时更新摄像机位置为“目标位置 + 偏移量”。关键代码示例: ```csharp public Transform target; // 拖拽目标角色 public Vector3 offset = new Vector3(0, 5, -10); void LateUpdate() { transform.position = target.position + offset; } ``` `LateUpdate` 方法需重点标——它在Update之后执行,避免因角色移动与摄像机更新不同步导致的画面抖动。 四、进阶技巧:视角旋转与边界限制 为增强交互性,教程还提及鼠标控制摄像机旋转:通过`Input.GetAxis("Mouse X")`和`Mouse Y`获取鼠标移动量,结合`Transform.Rotate`调整摄像机角度。同时,可添加边界判断如使用`Mathf.Clamp`限制旋转角度,防止镜头过度倾斜或穿模。通过官方教程3的学习,移动摄像机的核心在于“输入-处理-输出”的脚本逻辑:以`Input`类获取玩家操作,用`Transform`方法实现坐标变换,借助`Time.deltaTime`和`LateUpdate`确保流畅性。掌握这些基础后,可进一步扩展至镜头动画、平滑过渡等高级功能,为场景交互奠定基础。
