欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

鼠标拖动屏幕控制相机旋转(含移动端)

程序员文章站 2024-03-16 20:20:52
...
        public int right=75;//旋转相机y轴的最大值  (右边界)
        public int left=285;//旋转相机y轴的最小值  (左边界)
        public int speed=5;//相机旋转速度

PC

        if(Input.GetMouseButton(0)&& !EventSystem.current.IsPointerOverGameObject()){
        	transform.localEulerAngles += new Vector3(0, -Input.GetAxis("Mouse X"), 0) * Time.deltaTime * speed;
        	//限制旋转范围
        	if (transform.localEulerAngles.y > right && transform.localEulerAngles.y < 180)
        	{
            	transform.localEulerAngles = new Vector3(transform.localEulerAngles.x, right, transform.localEulerAngles.z);
        	}
        	if (transform.localEulerAngles.y < left && transform.localEulerAngles.y > 180)
        	{
            	transform.localEulerAngles = new Vector3(transform.localEulerAngles.x, left, transform.localEulerAngles.z);
        	}
        }
        //使相机在-75到75之间旋转
        //因为localEulerAngles.y的值是0-360,不存在负值,所以left为360-75=285。

移动端

        if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved&&!EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
        {
            Vector2 touchPosition = Input.GetTouch(0).deltaPosition;
            transform.localEulerAngles += new Vector3(0, -touchPosition.x, 0) * Time.deltaTime * speed;
            if (transform.localEulerAngles.y > right&& transform.localEulerAngles.y < 180)
            {
                transform.localEulerAngles = new Vector3(transform.localEulerAngles.x, right, transform.localEulerAngles.z);
            }
            if (transform.localEulerAngles.y < left&& transform.localEulerAngles.y > 180)
            {
                transform.localEulerAngles = new Vector3(transform.localEulerAngles.x, left, transform.localEulerAngles.z);
            }
        }
相关标签: unity3d