Beispiel #1
0
    void Update()
    {
        foreach (Touch touch in Input.touches) //используем цикл для отслеживания больше одного свайпа
        {                                      //должны быть закоментированы, если вы используете списки
          /*if (touch.phase == TouchPhase.Began) //проверяем первое касание
           * {
           *  fp = touch.position;
           *  lp = touch.position;
           *
           * }*/

            if (touch.phase == TouchPhase.Moved) //добавляем касания в список, как только они определены
            {
                touchPositions.Add(touch.position);
            }

            if (touch.phase == TouchPhase.Ended) //проверяем, если палец убирается с экрана
            {
                //lp = touch.position;  //последняя позиция касания. закоментируйте если используете списки
                fp = touchPositions[0];                        //получаем первую позицию касания из списка касаний
                lp = touchPositions[touchPositions.Count - 1]; //позиция последнего касания

                //проверяем дистанцию перемещения больше чем 20% высоты экрана
                if (Mathf.Abs(lp.x - fp.x) > dragDistance || Mathf.Abs(lp.y - fp.y) > dragDistance)
                {
                    Debug.Log(Vector2.Angle(lp, Vector2.up));
                    //проверяем, перемещение было вертикальным или горизонтальным
                    if (Mathf.Abs(lp.x - fp.x) > Mathf.Abs(lp.y - fp.y))
                    {                      //Если горизонтальное движение больше, чем вертикальное движение ...
                        if ((lp.x > fp.x)) //Если движение было вправо
                        {
                            shake.Right();
                            Debug.Log("Right Swipe");
                        }
                        else
                        {
                            shake.Left();
                            Debug.Log("Left Swipe");
                        }
                    }
                    else
                    {                    //Если вертикальное движение больше, чнм горизонтальное движение
                        if (lp.y > fp.y) //Если движение вверх
                        {
                            shake.Up();
                            Debug.Log("Up Swipe");
                        }
                        else
                        {
                            shake.Down();
                            Debug.Log("Down Swipe");
                        }
                    }
                }
                touchPositions.Clear();
            }
            else
            {   //Это ответвление, как расстояние перемещения составляет менее 3% от высоты экрана
            }
        }
    }