예제 #1
0
파일: InputEx.cs 프로젝트: liu1809/Unity3D
    void GetTouchHit(Vector3 _mousePos)
    {
        mCurFrameIsHitUI = NguiEx.IsHitUI(m_IgnoreNgui, m_IgnoreNguiColliderList);

        if (!mCurFrameIsHitUI)
        {
            mRay = m_Camera.ScreenPointToRay(_mousePos);

            if (Physics.Raycast(mRay, out mHit, Mathf.Infinity, m_LayerMask))
            {
                mTouchCurHitListener = mHit.collider.gameObject.GetComponent <InputExListener>();

                if (mTouchCurHitListener != null)
                {
                    isHit = true;
                }
                else
                {
                    isHit = false;
                }
            }
            else
            {
                isHit = false;
            }
        }
        else
        {
            isHit = false;
        }
    }
예제 #2
0
파일: InputEx.cs 프로젝트: liu1809/Unity3D
    void GetMouseHit(Vector3 _mousePos)
    {
        mMouseCurMousePos = _mousePos;

        if (m_MouseHoverEnableOnlyMove ? (mMouseCurMousePos != mMouseOldMousePos) : true)
        {
            mCurFrameIsHitUI = NguiEx.IsHitUI(m_IgnoreNgui, m_IgnoreNguiColliderList);

            if (!mCurFrameIsHitUI)
            {
                mRay = m_Camera.ScreenPointToRay(mMouseCurMousePos);

                if (Physics.Raycast(mRay, out mHit, Mathf.Infinity, m_LayerMask))
                {
                    mMouseCurHitListener = mHit.collider.gameObject.GetComponent <InputExListener>();

                    if (mMouseCurHitListener != null)
                    {
                        isHit = true;
                    }
                    else
                    {
                        isHit = false;
                    }
                }
                else
                {
                    isHit = false;
                }
            }
            else
            {
                isHit = false;
            }

            if (m_MouseHoverEnableOnlyMove)
            {
                mMouseOldMousePos = mMouseCurMousePos;
            }
        }
    }
예제 #3
0
    void Update()
    {
        mCurFrameIsHitUI = NguiEx.IsHitUI(m_IgnoreNgui, m_IgnoreNguiColliderList);

        #region Mouse Control
#if UNITY_EDITOR || UNITY_STANDALONE || UNITY_WEBPLAYER
        if (Input.GetMouseButtonDown(0) || Input.GetMouseButtonDown(1) || Input.GetMouseButtonDown(2))
        {
            mMouseDownIsHitUI = mCurFrameIsHitUI;
        }

        if (!mMouseDownIsHitUI)
        {
            if (Input.GetMouseButton(1) && !Input.GetMouseButton(0) && !Input.GetMouseButton(2))
            {
                MouseRotateCamera();
            }
            else if (m_IsEnableMove && Input.GetMouseButton(2) && !Input.GetMouseButton(0))
            {
                MouseMoveCamera();
            }
        }
        if (m_IsEnableZoom && !mCurFrameIsHitUI)
        {
            MousePushPullCamera();
        }
#endif
        #endregion

        #region Touch Control
#if !UNITY_EDITOR && UNITY_ANDROID || UNITY_IPHONE
        if (Input.GetTouch(0).phase == TouchPhase.Began)
        {
            mTouchBeganIsHitUI = mCurFrameIsHitUI;
        }

        if (!mTouchBeganIsHitUI)
        {
            if (Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Moved && mTouchMoveDelayTime >= m_Touch_MoveDelayTime)
            {
                TouchRotateCamera();
            }
            else if (m_IsEnableZoom && Input.touchCount == 2)
            {
                mTouchMoveDelayTime = 0f;
                TouchPushPullCamera();
            }
            else if (m_IsEnableMove && Input.touchCount >= 3)
            {
                mTouchMoveDelayTime = 0f;
                TouchMoveCamera();
            }
        }

        if (mTouchMoveDelayTime < m_Touch_MoveDelayTime)
        {
            mTouchMoveDelayTime += Time.deltaTime;
        }
#endif
        #endregion
    }