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); } }
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 }