前提:摄像机有3层或者4层父物体
思路:通过父物体的旋转拉近拉远来带动摄像机
using UnityEngine;
using System.Collections;public class CameraController : MonoBehaviour {
Transform upAndDown;
private float upDown = 1;
float zoom = 0;
Transform zoomTran;
void Start () {
upAndDown = transform.Find("UpAndDown");
zoomTran = transform.Find("UpAndDown/Zoom");
}
void Update () {
if(Input .GetMouseButton(0))
{
//旋转
this.transform.Rotate(Vector3.up * Input.GetAxis("Mouse X"));
//上下
upAndDown.transform.Rotate(Vector3.left * Input.GetAxis("Mouse Y"));
upDown -= Input.GetAxis("Mouse Y");
upDown = Mathf.Clamp(upDown, -10f, 40f);
upAndDown.localEulerAngles = new Vector3(upDown, 0, 0);
}
//缩放
zoom += Input.GetAxis("Mouse ScrollWheel");
zoom = Mathf.Clamp(zoom, -3f, 1.5f);
zoomTran.localPosition = new Vector3(0, 0, zoom);
}
}