Ejemplo n.º 1
0
    private void FingerDragMoveCallBack(int fingerIndex, Vector2 fingerPos, Vector2 delta)
    {
        fingerStepIndex = 3;
        if (UIViewUtil.Instance.OpenWindowCount > 0)
        {
            return;
        }
        Vector3   dir       = fingerPos - oldFingerPos;
        FingerDir fingerDir = FingerDir.None;

        //向上
        if (dir.y > -dir.x && dir.y > dir.x)
        {
            fingerDir = FingerDir.Up;
        }
        //向下
        if (-dir.y > -dir.x && -dir.y > dir.x)
        {
            fingerDir = FingerDir.Down;
        }
        //向左
        if (-dir.x > dir.y && -dir.x > -dir.y)
        {
            fingerDir = FingerDir.Left;
        }
        //向右
        if (dir.x > dir.y && dir.x > -dir.y)
        {
            fingerDir = FingerDir.Right;
        }

        if (OnFingerDir != null)
        {
            OnFingerDir(fingerDir);
        }
    }
Ejemplo n.º 2
0
        void Update()
        {
#if !UNITY_EDITOR && UNITY_ANDROID
            if (!useGesture)
            {
                return;
            }

            if (Input.touchCount != 1)
            {
                return;
            }

            if (Input.GetTouch(0).phase == TouchPhase.Began || Input.GetTouch(0).phase == TouchPhase.Stationary || Input.GetTouch(0).phase == TouchPhase.Canceled)
            {
                fingerDir  = FingerDir.none;
                touchPos_0 = Input.GetTouch(0).position;
                touchPos_1 = Input.GetTouch(0).position;
            }

            // 手势停止了.
            if (Input.GetTouch(0).phase == TouchPhase.Ended)
            {
                touchPos_1 = Input.GetTouch(0).position;
                float xMoveDistance = touchPos_1.x - touchPos_0.x;
                float yMoveDistance = touchPos_1.y - touchPos_0.y;

                // 手势是否满足移动距离.
                if (Mathf.Abs(xMoveDistance) < slideTargetPixel && Mathf.Abs(yMoveDistance) < slideTargetPixel)
                {
                    return;
                }

                // 判断方向.
                if (Mathf.Abs(xMoveDistance) >= Mathf.Abs(yMoveDistance))
                {
                    if (xMoveDistance > 0f)
                    {
                        fingerDir = FingerDir.right;
                    }
                    else
                    {
                        fingerDir = FingerDir.left;
                    }
                }
                else
                {
                    if (yMoveDistance > 0f)
                    {
                        fingerDir = FingerDir.up;
                    }
                    else
                    {
                        fingerDir = FingerDir.down;
                    }
                }

                DoGes();

                fingerDir = FingerDir.none;
            }
#endif
        }