본문 바로가기
개발/C#

유니티 C# 터치 스와이프 드래그 상하좌우 Swipe Drag 코드 작성 간단 구현

by SPNK 2024. 3. 10.
반응형

코드 작성

using UnityEngine;

public class SwipeInput : MonoBehaviour
{
    private Vector2 fingerDownPosition;
    private Vector2 fingerUpPosition;
    private bool isSwiping = false;

    public float swipeThreshold = 50f;

    void Update()
    {
        // 터치 입력의 개수를 확인합니다.
        if (Input.touchCount > 0)
        {
            // 첫 번째 터치 입력을 가져옵니다.
            Touch touch = Input.GetTouch(0);

            // 터치 상태에 따라 다른 동작을 수행합니다.
            switch (touch.phase)
            {
                case TouchPhase.Began:
                    // 터치가 시작되면 시작 위치를 기록합니다.
                    fingerDownPosition = touch.position;
                    isSwiping = true;
                    break;

                case TouchPhase.Moved:
                    break;

                case TouchPhase.Ended:
                    // 터치가 종료되면 종료 위치를 기록하고 스와이프를 확인합니다.
                    fingerUpPosition = touch.position;
                    CheckSwipe();
                    isSwiping = false;
                    break;
            }
        }
    }

    void CheckSwipe()
    {
        // 스와이프 거리를 계산합니다.
        float swipeDistanceX = Mathf.Abs(fingerDownPosition.x - fingerUpPosition.x);
        float swipeDistanceY = Mathf.Abs(fingerDownPosition.y - fingerUpPosition.y);

        // 좌우 스와이프 확인
        if (isSwiping && swipeDistanceX > swipeThreshold && swipeDistanceX > swipeDistanceY)
        {
            if (fingerDownPosition.x - fingerUpPosition.x > 0)
            {
                // 왼쪽으로 스와이프한 경우
                Debug.Log("왼쪽으로 스와이프");
            }
            else
            {
                // 오른쪽으로 스와이프한 경우
                Debug.Log("오른쪽으로 스와이프");
            }
        }
        // 상하 스와이프 확인
        else if (isSwiping && swipeDistanceY > swipeThreshold && swipeDistanceY > swipeDistanceX)
        {
            if (fingerDownPosition.y - fingerUpPosition.y > 0)
            {
                // 아래로 스와이프한 경우
                Debug.Log("아래로 스와이프");
            }
            else
            {
                // 위로 스와이프한 경우
                Debug.Log("위로 스와이프");
            }
        }
    }
}
반응형

댓글