Что это: SwipeController — компонент для распознавания свайпов мышью и касанием. Поддерживает четыре направления, статический доступ к последнему свайпу и UnityEvent<SwipeData>. Файл: Scripts/Tools/Input/SwipeController.cs, пространство имён: Neo.Tools.
Как использовать:
- Добавьте
SwipeControllerна объект сцены. - Настройте пороги
minDistanceForSwipeXиminDistanceForSwipeY. - Выберите режим
detectSwipeOnlyAfterRelease, если свайп должен фиксироваться только после отпускания. - Подпишитесь на
OnSwipeили читайте результат черезGetSwipeDirection(out direction).
SwipeController — это универсальный компонент для распознавания жестов "свайпа" (быстрого проведения пальцем/мышью). Он работает как на сенсорных устройствах, так и на ПК с мышью, и способен определять четыре основных направления: вверх, вниз, влево и вправо.
Этот инструмент идеально подходит для управления персонажем, навигации по меню или любой другой игровой механики, основанной на свайпах.
Перечисление (enum), которое содержит четыре возможных направления свайпа:
UpDownLeftRight
Структура, которая передается вместе с событием OnSwipe и содержит полную информацию о жесте:
Direction(SwipeDirection): Направление свайпа.StartPosition(Vector2): Координаты экрана, где начался свайп.EndPosition(Vector2): Координаты экрана, где закончился свайп.
- Пространство имен:
Neo.Tools - Путь к файлу:
Assets/Neoxider/Scripts/Tools/Input/SwipeController.cs
Описание
Компонент, который отслеживает ввод пользователя и определяет, был ли совершен свайп. При обнаружении свайпа он вызывает событие OnSwipe, передавая в него все данные о жесте.
Ключевые поля
detectSwipeOnlyAfterRelease: Еслиtrue, свайп будет засчитан только после того, как пользователь отпустит палец/кнопку мыши. Еслиfalse, свайпы могут регистрироваться непрерывно во время движения.minDistanceForSwipeX: Минимальное расстояние в пикселях по горизонтали, которое должен пройти палец/мышь, чтобы движение считалось свайпом.minDistanceForSwipeY: Минимальное расстояние в пиксеcлях по вертикали.ignoreLastSwipe: еслиtrue, одинаковый свайп подряд не будет подавляться логикойlastSwipeDirection.
Unity Events
OnSwipe(UnityEvent<SwipeData>): Главное событие компонента. Вызывается при обнаружении свайпа. Вы можете подписаться на него в инспекторе, чтобы вызвать публичный метод в другом скрипте. Важно: ваш метод должен приниматьSwipeDataв качестве параметра.
Singleton-подобный доступ
Instance: текущий экземплярSwipeController.GetSwipeDirection(out SwipeDirection direction): даёт polling-доступ к последнему зафиксированному свайпу.
Статические методы
GetSwipeDirection(out SwipeDirection direction): Альтернативный способ получения данных. Этот метод можно вызывать из любого скрипта вUpdate. Он вернетtrue, если с момента последнего кадра был зафиксирован новый свайп, и запишет его направление вdirection.
-
Добавьте
SwipeControllerна любой объект на сцене. -
Создайте другой скрипт (например,
PlayerController) и добавьте в него публичный метод:public void HandleSwipe(SwipeData data) { Debug.Log("Свайп в направлении: " + data.Direction); // Ваша логика здесь }
-
В инспекторе
SwipeController, в событииOnSwipe, нажмите+. -
Перетащите объект с вашим скриптом
PlayerControllerв полеNone (Object). -
В выпадающем списке выберите
PlayerController->HandleSwipe (dynamic SwipeData).
Теперь при каждом свайпе в консоль будет выводиться его направление.
SwipeControllerне наследуется отSingleton<T>, но хранит статическую ссылку вInstance.- Компонент сам выбирает между touch и mouse в
Update(). - В
SwipeDataтекущая реализация записываетStartPositionиEndPositionнапрямую из внутренних полей контроллера; если вы используете эти координаты как основу логики, лучше проверить конкретное поведение в проекте.