Unity3D学习日记(十一)UI滑动条和全景图控制

  最近忙着学UE4去了,没啥时间弄unity的玩意,公司老板说PC的VR做完了还要附送一个全景APP给他们,最近也没想到好写的玩意,就把这个UI滑动条和全景图的控制简单案例拿出来写写。(PS:大神们请绕道哟~~)

  全景图的APP其实就是一个简单的球形模型...然后摄像机在其中进行选择缩放等这个简单的功能,那么在APP中是如何控制摄像机的转动呢?

  全景图APP一般是使用陀螺仪进行摄像机控制进行控制,然而有些手机是没有陀螺仪的,这样APP也为它们提供了使用手动的方式进行旋转,肯定会有人发现,在使用UI功能的时候为啥摄像机不会移动旋转,这里其实方法很简单,就是对鼠标或手指第一次按下的时候判断是是否在UI上,如果是在UI上就返回False,不在UI就返回true即可。

  下面我是使用UGUI进行演示,如果需要NGUI的办法私聊吧~

  代码如下图所示:

 private bool IsInUI()
    {
#if UNITY_IPHONE || UNITY_ANDROID
		if (Input.touchCount >= 1 && Input.GetTouch(0).phase == TouchPhase.Began)
        {
            if (!_isFingerInUI && Main.instance.uiMain.IsFingerInUI())
            {
                _isFingerInUI = true;
            }
        }
		if (Input.touchCount >= 1 && Input.GetTouch(0).phase == TouchPhase.Ended)
        {
            if (_isFingerInUI && !Main.instance.uiMain.IsFingerInUI())
            {
                _isFingerInUI = false;
            }
        }
#elif UNITY_STANDALONE_WIN
        if (Input.GetMouseButtonDown(0))
        {
            if (!_isFingerInUI && Main.instance.uiMain.IsFingerInUI())
            {
                _isFingerInUI = true;
            }
        }
        if (Input.GetMouseButtonUp(0))
        {
            if (_isFingerInUI && !Main.instance.uiMain.IsFingerInUI())
            {
                _isFingerInUI = false;
            }
        }
#endif
        return _isFingerInUI;
    }
  如何使用这段代码呢

 public void GyroControlCamera()
    {
        if (PlayForwardCamera())
        {
            if (_isUseGyroscop)
            {
				angleVector1.x += (-_gyroscope.rotationRate.y * _Speed)*360f;
				angleVector1.y -= (-_gyroscope.rotationRate.x * _Speed)*360f;

				angleVector1.y = ClampAngle(angleVector1.y, _minAngleY, _maxAngleY);

				Quaternion rotateAngle = Quaternion.Euler(angleVector1.y, angleVector1.x, 0);
				this.transform.localRotation = rotateAngle;
				angleVector1.y = ClampAngle(angleVector1.y, _minAngleY, _maxAngleY);
                //this.transform.Rotate(-_gyroscope.rotationRate.x * _Speed, -_gyroscope.rotationRate.y * _Speed, 0);
            }
#if UNITY_IPHONE || UNITY_ANDROID
        else
        {
            if (!IsInUI())
            {
				//_logText.text = "false";
                FingerControlCamera();
            }
            else
            {
                //Debug.Log("true");
            } 
        }
#elif UNITY_STANDALONE_WIN
            if (!IsInUI())
            {
                //Debug.Log("false");
                MouseControlCamera();
            }
            else
            {
               // Debug.Log("true");
            }
#endif
        }

    }
就是怎么简单的方法来使用这个函数~,里面还有简单的陀螺仪进行控制的代码~


你可能感兴趣的:(Unity3D学习日记(十一)UI滑动条和全景图控制)