[Unity] 모바일 터치 스와이프 드래그 상하좌우 처리 기능 간단한 C# 스크립트

2024. 11. 9. 23:51·Unity

# 1. 코드 작성

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("위로 스와이프");
            }
        }
    }
}

 

'Unity' 카테고리의 다른 글

[Unity - Material] Canvas UI 내 배치된 Image에 Emission 효과 적용하기  (0) 2024.06.16
[Unity - Material] 여러 개의 머테리얼 색상을 일괄적으로 변경하는 방법  (0) 2024.06.13
[Unity - Material] 머테리얼을 복사해서 씬 전환 효과 구현하기  (1) 2024.06.06
[Unity - Shader Graph] UV 텍스처의 U좌표를 -방향으로 반복 출력하게 만들기  (0) 2024.06.04
게임 디자인 패턴 - 개요  (0) 2024.04.02
'Unity' 카테고리의 다른 글
  • [Unity - Material] Canvas UI 내 배치된 Image에 Emission 효과 적용하기
  • [Unity - Material] 여러 개의 머테리얼 색상을 일괄적으로 변경하는 방법
  • [Unity - Material] 머테리얼을 복사해서 씬 전환 효과 구현하기
  • [Unity - Shader Graph] UV 텍스처의 U좌표를 -방향으로 반복 출력하게 만들기
Logger's
Logger's
생각을 담는 공간 이곳은 게임 개발 아카이브
  • Logger's
    Game Development Archive
    Logger's
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (24)
      • Unity (7)
      • C# (4)
      • 디자인 패턴 (3)
      • 자료구조&알고리즘 (0)
      • Tip (5)
      • 이슈 해결 (3)
      • IDE (2)
      • C++ (0)
      • C++ STL (0)
      • DirectX (0)
      • 잡담 (0)
      • 취미 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    drag
    .editorconfig
    한글 깨짐
    유니티
    Computer Graphics
    DirectX #Texturing
    DirectX #Supersampling
    Unity
    모바일 환경
    utf-8
    swipe
    DirectX #Refraction #Reflection
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
Logger's
[Unity] 모바일 터치 스와이프 드래그 상하좌우 처리 기능 간단한 C# 스크립트
상단으로

티스토리툴바