Unity 鼠标滚轮缩放 拖动移动视角
发布日期:2021-05-04 04:29:42 浏览次数:34 分类:原创文章

本文共 2338 字,大约阅读时间需要 7 分钟。

using System.Collections;using System.Collections.Generic;using UnityEngine;public class cameraMove : MonoBehaviour{       public enum RotationAxes    {           MouseXAndY = 0,        MouseX = 1,        MouseY = 2    }    public RotationAxes m_axes = RotationAxes.MouseXAndY;    public float m_sensitivityX = 10f;    public float m_sensitivityY = 10f;    public bool CanMove  = false;    // 水平方向的 镜头转向    public float m_minimumX = -360f;    public float m_maximumX = 360f;    // 垂直方向的 镜头转向 (这里给个限度 最大仰角为45°)    public float m_minimumY = -45f;    public float m_maximumY = 45f;    float MouseWheelSensitivity = 5;    float MouseZoomMin = 2;    float MouseZoomMax = 10;    float m_rotationY = 0f;    // Use this for initialization    void Start()    {           // 防止 刚体影响 镜头旋转        if (GetComponent<Rigidbody>())        {               GetComponent<Rigidbody>().freezeRotation = true;        }    }    // Update is called once per frame    void Update()    {           if (Input.GetAxis("Mouse ScrollWheel") < 0)        {               if (Camera.main.fieldOfView <= 200)                Camera.main.fieldOfView += 2;        }        //Zoom in        if (Input.GetAxis("Mouse ScrollWheel") > 0)        {               if (Camera.main.fieldOfView > 10)                Camera.main.fieldOfView -= 2;        }        if (Input.GetMouseButtonDown(1))        {               CanMove = !CanMove;        }        if (CanMove)        {               if (m_axes == RotationAxes.MouseXAndY)            {                   float m_rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * m_sensitivityX;                m_rotationY += Input.GetAxis("Mouse Y") * m_sensitivityY;                m_rotationY = Mathf.Clamp(m_rotationY, m_minimumY, m_maximumY);                transform.localEulerAngles = new Vector3(-m_rotationY, m_rotationX, 0);            }            else if (m_axes == RotationAxes.MouseX)            {                   transform.Rotate(0, Input.GetAxis("Mouse X") * m_sensitivityX, 0);            }            else            {                   m_rotationY += Input.GetAxis("Mouse Y") * m_sensitivityY;                m_rotationY = Mathf.Clamp(m_rotationY, m_minimumY, m_maximumY);                transform.localEulerAngles = new Vector3(-m_rotationY, transform.localEulerAngles.y, 0);            }        }    }  }
上一篇:Unity 取消两个刚体的碰撞检查
下一篇:Unity碰撞检查 自定义事件

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2025年03月26日 22时42分18秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章