Unity 摄像机控制器
Unity 摄像机控制器
一个功能完整的Unity摄像机控制脚本,支持鼠标拖动移动、旋转、缩放,并惯性效果。
功能特点
- 鼠标左键拖动:摄像机上下左右移动
- 鼠标右键拖动:摄像机围绕目标点旋转
- 鼠标滚轮:摄像机缩放
- 平滑旋转:使用SmoothDamp实现流畅的旋转过渡
- 惯性旋转:支持旋转惯性,提升操作手感
- 视角重置:一键返回初始视角
- 参数可调:所有操作速度、限制和效果都可通过Inspector调整
目标设置
Target:摄像机围绕旋转的目标点(可选)- Use Camera Position As Target`:如果没有指定目标,是否使用摄像机初始位置作为参考点
-
移动设置
Move Speed:鼠标左键拖动时的移动速度Move Smooth Time:移动时的平滑时间
旋转设置
Rotation Speed:鼠标右键拖动时的旋转速度Min Vertical Angle:垂直旋转的最小角度限制Max Vertical Angle:垂直旋转的最大角度限制Rotation Smooth Time:旋转时的平滑时间
惯性设置
Enable Inertia:是否启用惯性旋转Inertia Damping:惯性衰减系数(值越小,惯性持续时间越长)Inertia Threshold:惯性阈值(低于此值时停止惯性)
缩放设置
Zoom Speed:鼠标滚轮缩放速度Min Zoom Distance:最小缩放距离Max Zoom Distance:最大缩放距离Zoom Smooth Time:缩放时的平滑时间
视角重置
Reset View Key:重置视角的快捷键Reset Smooth Time:重置视角时的平滑时间
注意事项
- 如果没有指定目标点,摄像机会围绕自身旋转
- 建议在场景中创建一个空物体作为目标点,这样可以更好地控制旋转中心
- 调整平滑时间和惯性参数可以获得不同的操作手感
- 垂直旋转角度限制可以防止摄像机翻转过头
以下为示例代码,亲测可用
using UnityEngine;/// <summary>
/// 摄像机控制器 - 实现鼠标控制摄像机移动、旋转、缩放和平滑惯性效果
/// </summary>
[RequireComponent(typeof(Camera))]
public class CameraController : MonoBehaviour
{[Header("目标设置")][Tooltip("摄像机围绕旋转的目标点")]public Transform target;[Tooltip("如果没有指定目标,是否使用摄像机初始位置作为参考点")]public bool useCameraPositionAsTarget = true;[Header("移动设置")][Tooltip("鼠标左键拖动时的移动速度")]public float moveSpeed = 5f;[Tooltip("移动时的平滑时间")]public float moveSmoothTime = 0.3f;[Header("旋转设置")][Tooltip("鼠标右键拖动时的旋转速度")]public float rotationSpeed = 100f;[Tooltip("垂直旋转的最小角度限制")]public float minVerticalAngle = -80f;[Tooltip("垂直旋转的最大角度限制")]public float maxVerticalAngle = 80f;[Tooltip("旋转时的平滑时间")]public float rotationSmoothTime = 0.3f;[Header("惯性设置")][Tooltip("是否启用惯性旋转")]public bool enableInertia = true;[Tooltip("惯性衰减系数 (值越小,惯性持续时间越长)")]public float inertiaDamping = 5f;[