Exemplo n.º 1
0
    void Update()
    {
        //Отслеживание всех касаний
        foreach (Touch touch in Input.touches)
        {
            //Если : касание является свайпом - сохраняем его
            if (touch.phase == TouchPhase.Moved)
            {
                _TouchsPosList.Add(touch.position);
            }

            //Если : касание завершается
            if (touch.phase == TouchPhase.Ended)
            {
                //Положения первого и последнего касаний
                _FirstPos = _TouchsPosList[0];
                _LastPos  = _TouchsPosList[_TouchsPosList.Count - 1];

                //Если : дистанция перемещения больше 20% высоты экрана
                if (Mathf.Abs(_LastPos.x - _FirstPos.x) > _Distance || Mathf.Abs(_LastPos.y - _FirstPos.y) > _Distance)
                {
                    //Определение направления перемещения
                    if (Mathf.Abs(_LastPos.x - _FirstPos.x) > Mathf.Abs(_LastPos.y - _FirstPos.y))
                    {
                        //Если : горизонтальное движение больше, чем вертикальное
                        if (_LastPos.x > _FirstPos.x)
                        {
                            //Свайп вправо
                            Movement.AddMovement(TypeMovement.Right);
                        }
                        else
                        {
                            //Свайп влево
                            Movement.AddMovement(TypeMovement.Left);
                        }
                    }
                    //Вертикальные движения не обязательно отслеживать
                    else
                    //Если : вертикальное движение больше, чем горизонтальное
                    if (_LastPos.y > _FirstPos.y)
                    {
                        //Свайп вверх
                        Movement.AddMovement(TypeMovement.Up);
                    }
                    else /*Свайп вниз*/ } {
            }
            //Расцениваю короткие перемещения, как простые нажатия
            else
            {
                //Если : нажатие было в области кнопки паузы
                if (PauseButton.rect.Contains(_FirstPos))
                {
                    MainManager.Interface.SetPause();
                }
                //Нажатие было вне кнопки
                else
                {
                    Movement.AddMovement(TypeMovement.Up);
                }
            }
        }
    }