Размах причина GetMouseButtonDown (0) - PullRequest
0 голосов
/ 09 марта 2020

У меня есть скрипт, который распознает смахивание ввода. Когда я сейчас запускаю пролистывание, оно также вызывает Input.GetMouseButtonDown(0). Можете ли вы сказать мне, как удалить Input.GetMouseButtonDown(0), который приходит от свайпа?

С этим свайпом игра останавливается. (с Time.timeScale = 0f;) После возобновления продолжается действие, которое было инициировано с Input.GetMouseButtonDown(0) до приостановки игры.

Мои идеи: Работайте с TouchPhase.Stationary или ищите короткое нажатие?

Ответы [ 2 ]

1 голос
/ 10 марта 2020

От макушки головы вы можете:

  1. Позвонить Input.ResetInputAxes; он очистит все входные флаги для одного кадра.
  2. Установите флаг, который был обработан, и проверьте его при проверке Input.GetMouseButtonDown(0) в другом месте.

Оба требуют обеспечения обнаружение смахивания происходит за до проверки Input.GetMouseButtonDown(0).

Один из способов убедиться в этом - использовать настройки порядка выполнения сценариев Unity .

0 голосов
/ 10 марта 2020

Я бы порекомендовал вообще не использовать класс Input, это вызывает много проблем, лучше иметь отдельный RaycastTarget для пользовательского интерфейса с Script, реализующим IPointerDownHandler, IPointerUpHandler, который будет гарантировать, что только один RaycastTarget в данный момент обрабатывает ваши прикосновения. Input.GetMouseButton вернет true, даже если какой-то RaycastTarget уже должен был использовать ваши события.

...