Как считывать длинну свайпа

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

Как считывать длинну свайпа

Сообщение fsgdoterr 14 июл 2018, 22:10

Как считывать длинну и скорость свайпа ?
fsgdoterr
UNец
 
Сообщения: 42
Зарегистрирован: 10 мар 2018, 15:43

Re: Как считывать длинну свайпа

Сообщение 1max1 14 июл 2018, 22:26

Длина -> Отрезок от точки начала свайпа до точки конца, то есть тыкнули пальцем - это точка старта, поелозили, оторвали - это точка конца, как найти длину вектора думаю знаешь.
Скорость -> Длина деленная на время от начала старта до конца, то есть если ткнули пальцем, запустился таймер, проелозили 10 юнитов к примеру, оторвали палец, таймер остановили, к примеру таймер показывает 2 секунды, значит скорость была 10 / 2 = 5 юнитов в секунду.

Это всё примитивщина, на самом деле скорость может быть разная в разный промежуток времени, а пройденное расстояние гораздо длиннее, допустим если сделать крюк, но если вести по прямой линии и с примерно одинаковой скоростью, то в принципе должно оптимально работать.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Как считывать длинну свайпа

Сообщение fsgdoterr 14 июл 2018, 23:11

1max1 писал(а):Длина -> Отрезок от точки начала свайпа до точки конца, то есть тыкнули пальцем - это точка старта, поелозили, оторвали - это точка конца, как найти длину вектора думаю знаешь.
Скорость -> Длина деленная на время от начала старта до конца, то есть если ткнули пальцем, запустился таймер, проелозили 10 юнитов к примеру, оторвали палец, таймер остановили, к примеру таймер показывает 2 секунды, значит скорость была 10 / 2 = 5 юнитов в секунду.

Это всё примитивщина, на самом деле скорость может быть разная в разный промежуток времени, а пройденное расстояние гораздо длиннее, допустим если сделать крюк, но если вести по прямой линии и с примерно одинаковой скоростью, то в принципе должно оптимально работать.

Я новичек, и плохопонимаю, можешь код написать если не трудно?)
fsgdoterr
UNец
 
Сообщения: 42
Зарегистрирован: 10 мар 2018, 15:43

Re: Как считывать длинну свайпа

Сообщение Cr0c 15 июл 2018, 08:52

fsgdoterr писал(а):Я новичек, и плохопонимаю, можешь код написать если не трудно?)

Код тут мало поможет. По пунктам разбирай алгоритм.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Как считывать длинну свайпа

Сообщение 1max1 15 июл 2018, 08:58

Почему не поможет, человек хочет чтобы за него всё сделали, зачем думать самому верно?
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Как считывать длинну свайпа

Сообщение Cr0c 15 июл 2018, 09:55

1max1 писал(а):Почему не поможет, человек хочет чтобы за него всё сделали

Exactly!
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Как считывать длинну свайпа

Сообщение fsgdoterr 15 июл 2018, 10:45

1max1 писал(а):Длина -> Отрезок от точки начала свайпа до точки конца, то есть тыкнули пальцем - это точка старта, поелозили, оторвали - это точка конца, как найти длину вектора думаю знаешь.
Скорость -> Длина деленная на время от начала старта до конца, то есть если ткнули пальцем, запустился таймер, проелозили 10 юнитов к примеру, оторвали палец, таймер остановили, к примеру таймер показывает 2 секунды, значит скорость была 10 / 2 = 5 юнитов в секунду.

Это всё примитивщина, на самом деле скорость может быть разная в разный промежуток времени, а пройденное расстояние гораздо длиннее, допустим если сделать крюк, но если вести по прямой линии и с примерно одинаковой скоростью, то в принципе должно оптимально работать.

Синтаксис:
Используется csharp
if (Input.touchCount == 1)
            {
                Touch touch = Input.GetTouch(0);

                if (touch.phase == TouchPhase.Began)
                    _begin = touch.position;
                else if (touch.phase == TouchPhase.Ended)
                    _distance = Vector3.Magnitude(touch.position - _begin);
            }
 

так будет норм?
fsgdoterr
UNец
 
Сообщения: 42
Зарегистрирован: 10 мар 2018, 15:43

Re: Как считывать длинну свайпа

Сообщение 1max1 15 июл 2018, 11:22

Выглядит логично...
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Как считывать длинну свайпа

Сообщение Cr0c 15 июл 2018, 19:53

Только тут длина в пикселях экрана
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Как считывать длинну свайпа

Сообщение Nubila 16 июл 2018, 12:10

А если через:
Синтаксис:
Используется csharp
 
            var clickDown = Input.GetMouseButtonDown(0);
            var clickUp = Input.GetMouseButtonUp(0);
            if (clickDown)
            {
                _begin = mainCam.ScreenToWorldPoint(Input.mousePosition);
            }
            else if (clickUp)
            {
                _distance = Vector2.Distance(mainCam.ScreenToWorldPoint(Input.mousePosition), _begin);
            }

Это будет дешевле чем создание объекта Touch или ScreenToWorldPoint кроет в себе что то потяжелее чем GetTouch?
Аватара пользователя
Nubila
UNITрон
 
Сообщения: 160
Зарегистрирован: 12 июл 2017, 15:59
Откуда: Запорожье

Re: Как считывать длинну свайпа

Сообщение Cr0c 16 июл 2018, 12:17

Это нормально, не полсотни раз за кадр вызываешь же. Да и Touch - структура, а не класс. Можно не GetTouch, а touches[0]
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 35