Exemplo n.º 1
0
    }     //end void

    gDefine.Direction HandDirection(Vector2 StartPos, Vector2 EndPos)
    {
        gDefine.Direction mDirection = gDefine.Direction.none;
        float             xDiff      = EndPos.x - StartPos.x;
        float             yDiff      = EndPos.y - StartPos.y;
        float             slope      = Mathf.Abs(yDiff / xDiff);

        if (Mathf.Abs(StartPos.x - EndPos.x) > Mathf.Abs(StartPos.y - EndPos.y))
        {
            if (StartPos.x > EndPos.x)
            {
                print("Left");
                //手指向左滑動
                mDirection = gDefine.Direction.Left;
            }
            else
            {
                print("Right");
                //手指向右滑動
                mDirection = gDefine.Direction.Right;
            }
        }
        else if (Mathf.Abs(StartPos.x - EndPos.x) == Mathf.Abs(StartPos.y - EndPos.y))
        {
            x          = false;
            mDirection = gDefine.Direction.none;
        }
        else if (slope <= 5.67 && slope >= 0.364)
        {
            if (StartPos.x > EndPos.x)
            {
                mDirection = gDefine.Direction.Left_Up;
            }
            else if (EndPos.x > StartPos.x)
            {
                mDirection = gDefine.Direction.Right_Up;
            }
        }
        else
        {
            if (m_screenPos.y > EndPos.y)
            {
                //手指向下滑動
                mDirection = gDefine.Direction.Down;
            }
            else
            {
                //手指向上滑動
                mDirection = gDefine.Direction.Up;
            }
        }
        return(mDirection);
    }
Exemplo n.º 2
0
    void MouseInput()
    {
        if (Input.GetMouseButtonDown(0))
        {
            m_screenPos = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
        }

        if (Input.GetMouseButtonUp(0))
        {
            Vector2 pos = new Vector2(Input.mousePosition.x, Input.mousePosition.y);

            gDefine.Direction mDirection = HandDirection(m_screenPos, pos);
            Debug.Log("mDirection: " + mDirection.ToString());
        }
    }
Exemplo n.º 3
0
    void MouseInput()
    {
        if (Input.GetMouseButtonDown(0))
        {
            x           = true;
            m_screenPos = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
        }
        else
        {
            x = false;
        }
        if (Input.GetMouseButtonUp(0))
        {
            Vector2 pos = new Vector2(Input.mousePosition.x, Input.mousePosition.y);

            gDefine.Direction mDirection = HandDirection(m_screenPos, pos);
            Gesture = mDirection;
            print(Gesture);
        }
    }
Exemplo n.º 4
0
    void MobileInput()
    {
        if (Input.touchCount <= 0)
        {
            return;
        }

        //1個手指觸碰螢幕
        if (Input.touchCount == 1)
        {
            print(Input.touches[0].position);

            //開始觸碰
            if (Input.touches[0].phase == TouchPhase.Began)
            {
                Debug.Log("Began");
                //紀錄觸碰位置
                m_screenPos = Input.touches[0].position;

                //手指移動
            }
            else if (Input.touches[0].phase == TouchPhase.Moved)
            {
                Debug.Log("Moved");
                //移動攝影機
                //Camera.main.transform.Translate (new Vector3 (-Input.touches [0].deltaPosition.x * Time.deltaTime, -Input.touches [0].deltaPosition.y * Time.deltaTime, 0));
            }


            //手指離開螢幕
            if (Input.touches[0].phase == TouchPhase.Ended || Input.touches[0].phase == TouchPhase.Canceled)
            {
                Debug.Log("Ended");
                Vector2 pos = Input.touches[0].position;

                gDefine.Direction mDirection = HandDirection(m_screenPos, pos);
                Debug.Log("mDirection: " + mDirection.ToString());
            }
            //攝影機縮放,如果1個手指以上觸碰螢幕
        }
        else if (Input.touchCount > 1)
        {
            //記錄兩個手指位置
            Vector2 finger1 = new Vector2();
            Vector2 finger2 = new Vector2();

            //記錄兩個手指移動距離
            Vector2 move1 = new Vector2();
            Vector2 move2 = new Vector2();

            //是否是小於2點觸碰
            for (int i = 0; i < 2; i++)
            {
                UnityEngine.Touch touch = UnityEngine.Input.touches[i];

                if (touch.phase == TouchPhase.Ended)
                {
                    break;
                }

                if (touch.phase == TouchPhase.Moved)
                {
                    //每次都重置
                    float move = 0;

                    //觸碰一點
                    if (i == 0)
                    {
                        finger1 = touch.position;
                        move1   = touch.deltaPosition;
                        //另一點
                    }
                    else
                    {
                        finger2 = touch.position;
                        move2   = touch.deltaPosition;

                        //取最大X
                        if (finger1.x > finger2.x)
                        {
                            move = move1.x;
                        }
                        else
                        {
                            move = move2.x;
                        }

                        //取最大Y,並與取出的X累加
                        if (finger1.y > finger2.y)
                        {
                            move += move1.y;
                        }
                        else
                        {
                            move += move2.y;
                        }

                        //當兩指距離越遠,Z位置加的越多,相反之
                        Camera.main.transform.Translate(0, 0, move * Time.deltaTime);
                    }
                }
            } //end for
        }     //end else if
    }         //end void
Exemplo n.º 5
0
    void MobileInput()
    {
        if (Input.touchCount <= 0)
        {
            x = false;
            return;
        }


        //1個手指觸碰螢幕
        if (Input.touchCount == 1)
        {
            x = true;
            Vector2 finger = new Vector2();
            //開始觸碰
            if (Input.touches[0].phase == TouchPhase.Began)
            {
                //紀錄觸碰位置
                m_screenPos = Input.touches[0].position;
            }
            else if (Input.touches[0].phase == TouchPhase.Moved)
            {
                Debug.Log("Moved");
            }


            //手指離開螢幕
            if (Input.touches[0].phase == TouchPhase.Ended || Input.touches[0].phase == TouchPhase.Canceled)
            {
                finger = Input.touches[0].position;

                gDefine.Direction mDirection = HandDirection(m_screenPos, finger);
                Gesture = mDirection;
            }
        }
        else if (Input.touchCount > 1)
        {
            //記錄兩個手指位置
            Vector2[] fingerStart = new Vector2[2];

            Vector2[] fingerEnd = new Vector2[2];

            //是否是小於2點觸碰
            for (int i = 0; i < 2; i++)
            {
                UnityEngine.Touch touch = UnityEngine.Input.touches[i];

                if (touch.phase == TouchPhase.Began)
                {
                    //紀錄觸碰位置
                    fingerStart[i] = touch.position;
                }

                if (touch.phase == TouchPhase.Ended || touch.phase == TouchPhase.Canceled || touch.phase == TouchPhase.Moved)
                {
                    fingerEnd[i] = touch.position;
                }
            }//end for

            gDefine.Direction mDirection0 = HandDirection(fingerStart[0], fingerEnd[0]);
            gDefine.Direction mDirection1 = HandDirection(fingerStart[1], fingerEnd[1]);

            if (Vector2.Distance(fingerStart[0], fingerStart[1]) > Vector2.Distance(fingerEnd[0], fingerEnd[1]))
            {
                Gesture = gDefine.Direction.ZoomIn;
            }
            else if (mDirection0 == gDefine.Direction.Down && mDirection1 == gDefine.Direction.Down)
            {
                Gesture = gDefine.Direction.ZoomDown;
            }
            else
            {
                Gesture = mDirection0;
            }
        } //end else if
    }     //end void