using UnityEngine;
public class MainCameraController : MonoBehaviour
{
public float rotationSpeed = 5.0f; // 摄像机旋转速度
public float zoomSpeed = 10.0f; // 摄像机缩放速度
public float minZoom = 20.0f; // 摄像机最小距离(视场角)
public float maxZoom = 80.0f; // 摄像机最大距离(视场角)
private Camera cam;
private float currentZoom = 40.0f; // 当前摄像机距离(视场角)
private Vector3 initialPosition; // 初始摄像机位置
private Quaternion initialRotation; // 初始摄像机旋转
void Start()
{
cam = GetComponent<Camera>();
currentZoom = cam.fieldOfView;
// 记录摄像机的初始位置和方向
initialPosition = transform.position;
initialRotation = transform.rotation;
}
void Update()
{
// 处理鼠标右键旋转摄像机
if (Input.GetMouseButton(1))
{
float horizontal = Input.GetAxis("Mouse X") * rotationSpeed;
float vertical = Input.GetAxis("Mouse Y") * rotationSpeed;
transform.Rotate(Vector3.up, -horizontal);
transform.Rotate(Vector3.right, vertical);
}
// 处理鼠标滚轮缩放摄像机
float scroll = Input.GetAxis("Mouse ScrollWheel");
if (scroll != 0.0f)
{
float desiredZoom = currentZoom - scroll * zoomSpeed;
currentZoom = Mathf.Clamp(desiredZoom, minZoom, maxZoom);
cam.fieldOfView = currentZoom;
}
// 处理空格键复原摄像机位置
if (Input.GetKeyDown(KeyCode.Space))
{
ResetCamera();
}
}
void ResetCamera()
{
transform.position = initialPosition;
transform.rotation = initialRotation;
currentZoom = 40.0f;
cam.fieldOfView = currentZoom;
}
}
以上脚本挂载到摄像机上