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% от высоты экрана } } }