Обнаружение удара даже пальцем не был выпущен - PullRequest
0 голосов
/ 10 июля 2019

Я хочу определить, как мышь проводит пальцем вверх и вниз, я попробовал приведенный ниже скрипт, но он работает только:

1 - если палец отпущен между любыми двумя движениями.2 - если палец не был отпущен, но только если второй удар превысил исходное положение пальца (firstPressPos).

Что я хочу точно:

Например, я положил палец на экран и проведу пальцем вниз, а затем, проведя пальцем вверх (не отпуская палец между двумя пролистываниями), я хочу обнаружить два пролистывания в реальном времени.

Как я могу это сделать?

Сценарий:

if (Input.GetMouseButtonDown(0))
    {
        firstPressPos = new Vector3(Input.mousePosition.x, Input.mousePosition.y);
    }

if (Input.GetMouseButton(0))
    {
        secondPressPos = new Vector3(Input.mousePosition.x, Input.mousePosition.y);

        currentSwipe = new Vector3(secondPressPos.x - firstPressPos.x, secondPressPos.y - firstPressPos.y);

        currentSwipe.Normalize();

        if (currentSwipe.y > 0 && currentSwipe.x > -0.5f && currentSwipe.x < 0.5f)
        {
            //Swipe Up
        }

        if (currentSwipe.y < 0 && currentSwipe.x > -0.5f && currentSwipe.x < 0.5f)
        {
            //Swipe Down
        }
    }

1 Ответ

0 голосов
/ 11 июля 2019

Вам нужно добавить пару флагов, чтобы узнать, в каком состоянии вы находитесь, если вы в одном.

private bool _swiping;
private bool _swipingDown;
private Vector3 _previousSwipePosition;

private void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        _previousSwipePosition = Input.mousePosition;
        _swiping = true;
        Debug.log("Started Swipe");
    }
    else if (Input.GetMouseButtonUp(0))
    {
        _swiping = false;
        Debug.log("Finished Swipe");
    }

    if (_swiping)
    {
        Vector3 newPosition = Input.mousePosition;
        if (newPosition.y < _previousSwipePosition.y)
        {
            if (!_swipingDown)
            {
                Debug.Log("Started Swipe Down");
                _swipingDown = true;
            }
        }
        if (newPosition.y> _previousSwipePosition.y)
        {
            if (_swipingDown)
            {
                Debug.Log("Started Swipe Up");
                _swipingDown = false;
            }
        }
        _previousSwipePosition = newPosition;
    }
}

Это позволит вам узнать, когда движение проведено, завершено и изменяет направление с помощью флагов.

flags - логические значения для обозначения чего-либо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...