Bootstrap

Unity 鼠标和触摸控制摄像机移动和缩放

Unity 鼠标和触摸控制摄像机移动和缩放

代码

代码片

RequireComponent(typeof(Camera))]
public class CameraController : MonoBehaviour
{
   
    /// <summary>
    /// 摄像机
    /// </summary>
    private Camera _camera;
    /// <summary>
    /// 手指按下
    /// </summary>
    bool _fingerDown = false;
    /// <summary>
    /// 单指滑动的手指位置
    /// </summary>
    Vector3 _oneFingerDragStartPos;
    /// <summary>
    /// 双指缩放的上一帧的双指距离
    /// </summary>
    float _twoFingerLastDistance = -1;

    /// <summary>
    /// 摄像机移动最小位置
    /// </summary>
    [SerializeField] Vector2 _minPosition;
    /// <summary>
    /// 摄像机移动最大位置
    /// </summary>
    [SerializeField] Vector2 _maxPosition;
    /// <summary>
    /// 默认尺寸
    /// </summary>
    [SerializeField] float _defaultSize = 5f;
    /// <summary>
    /// 最小缩放尺寸
    /// </summary>
    [SerializeField] float _minSize;
    /// <summary>
    /// 最大缩放尺寸
    /// </summary>
    [SerializeField] float _maxSize;
    /// <summary>
    /// 缩放速度
    /// </summary>
    [SerializeField] float _scaleSpeed = 0.1f;
    /// <summary>
    /// 移动速度
    /// </summary>
    [SerializeField] float _moveSpeed = 1f;
    /// <summary>
    /// 锁定位置
    /// </summary>
    Vector3 _lockPosition;

    public Vector3 LockPosition {
    get => ChangePosition(_lockPosition); set => _lockPosition 
;