События Pinch и Rotate вызываются одновременно, независимо от положения пальца в Unreal? - PullRequest
0 голосов
/ 11 сентября 2018

По сути, я создаю мобильное приложение в Unreal.Я обнаружил, что Unreal имеет встроенные жесты Rotate и Pinch для мобильных телефонов.Однако примерно через пять секунд после того, как я их обнаружил, я снова упал в бездну отчаяния.

После присоединения простой строки к обоим событиям я обнаружил, что независимо от того, как я размещаю пальцы на экране, оба события в основном вызываются одновременно.Настраивая простые логические значения для каждого события, я обнаружил, что в этом сражении ввода событие пинч в основном побеждает 9/10 раз.

Я чувствую, что я не делаю ничего плохого, поскольку программирование предполагает, что это встроенное событие.Это какая-то ошибка или она сломана?Есть ли какой-то определенный способ, которым мои пальцы должны двигаться, чтобы вызвать одно событие или другое?Мне кажется, что я сделал довольно стандартный жест щипка и поворота для мобильных телефонов ...

1 Ответ

0 голосов
/ 13 сентября 2018

Проведя еще несколько исследований, я обнаружил, что после установки значения оси для двух событий жестов, они оба дают очень разные значения. Жест щепотки дает значение последовательно от 0 до 14ish. С другой стороны, ось жеста поворота возвращает степень поворота.

Я решил проблему их одновременного выполнения, кэшируя текущее значение оси вращения и сравнивая его со следующим значением, если разница между ними была больше 10 (абсолютное значение), тогда я выполнил вращение, Я также взял это значение и разделил его на 5, чтобы получить более плавное вращение, 2 градуса за вызов.

Что касается оси сжатия, я не чувствовал необходимости устанавливать ограничитель, потому что моя скорость масштабирования относительно низкая, и по большей части при выполнении поворота значение не сильно меняется. Однако, если кто-то планирует использовать жест щипка, я настоятельно рекомендую нормализовать диапазон от -1 до 1. Я думаю, что это просто плохое выполнение со стороны Unreal, потому что он не делает этого из коробки , Небольшое предложение о том, как это сделать, заключается в том, что вам нужно проверить, больше ли значение, чем 1 (увеличение) или нет (уменьшение). Таким образом, вы должны нормализовать значения от 0-1 до -1 до 0 и значения от 1-14 до 0 до 1, если это имеет смысл. Учитывая, что событие нажатия вызывается каждый тик, когда два пальца находятся на экране, имеет смысл нормализовать значения. Конечно, если вы просто заменяете масштаб на значение оси, он работает «из коробки», но большинство людей не масштабируют объекты, а просто перемещают камеру / штангу вперед или меньше.

Надеюсь, это поможет кому-то другому, пытающемуся использовать эти плохо документированные события жестов.

...