Для реализации жеста swipe (перетаскивания) в Unity с использованием C# следует выполнить следующие шаги:
1. Настройте сцену Unity: создайте объект, к которому вы хотите применить жест swipe. Обычно это может быть игровой объект с компонентом Collider, например, GameObject с Collider2D для 2D игры или Collider для 3D игры.
2. Создайте скрипт SwipeDetector.cs, который будет ответственен за определение жеста swipe:
using UnityEngine; public class SwipeDetector : MonoBehaviour { private Vector2 fingerDownPosition; private Vector2 fingerUpPosition; public float minDistanceForSwipe = 20f; public event System.Action<SwipeData> OnSwipe = delegate { }; private void Update() { foreach (Touch touch in Input.touches) { if (touch.phase == TouchPhase.Began) { fingerUpPosition = touch.position; fingerDownPosition = touch.position; } if (touch.phase == TouchPhase.Ended) { fingerDownPosition = touch.position; DetectSwipe(); } } } void DetectSwipe() { if (SwipeDistanceCheckMet()) { Vector2 currentSwipe = fingerDownPosition - fingerUpPosition; if (currentSwipe.magnitude > minDistanceForSwipe) { currentSwipe.Normalize(); OnSwipe(new SwipeData { StartPosition = fingerDownPosition, EndPosition = fingerUpPosition, Direction = currentSwipe }); } } fingerUpPosition = fingerDownPosition; } bool SwipeDistanceCheckMet() { return Vector3.Distance(fingerDownPosition, fingerUpPosition) > minDistanceForSwipe; } } public struct SwipeData { public Vector2 StartPosition; public Vector2 EndPosition; public Vector2 Direction; }
3. Присоедините скрипт SwipeDetector к игровому объекту, который вы создали на шаге 1.
4. Добавьте обработчик события OnSwipe в нужное место вашего кода, чтобы реагировать на жест swipe:
private void OnEnable() { GetComponent<SwipeDetector>().OnSwipe += HandleSwipe; } private void OnDisable() { GetComponent<SwipeDetector>().OnSwipe -= HandleSwipe; } void HandleSwipe(SwipeData swipeData) { Vector2 direction = swipeData.Direction; if (Mathf.Abs(direction.x) > Mathf.Abs(direction.y)) { if (direction.x > 0) { Debug.Log("Swipe Right"); } else { Debug.Log("Swipe Left"); } } else { if (direction.y > 0) { Debug.Log("Swipe Up"); } else { Debug.Log("Swipe Down"); } } }
Теперь при выполнении жеста swipe вверх, вниз, вправо или влево будут выводиться сообщения в консоль Unity соответственно "Swipe Up", "Swipe Down", "Swipe Right", "Swipe Left".
Это базовый пример реализации жеста swipe в Unity с помощью C#. Можно доработать его, добавив более сложную логику обработки свайпа, например, для перемещения объекта по экрану или выполнения свайпа в определенных областях экрана.