Как реализовать swipe в unity?

Для реализации жеста 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#. Можно доработать его, добавив более сложную логику обработки свайпа, например, для перемещения объекта по экрану или выполнения свайпа в определенных областях экрана.