개요
유니티에선 스와이프, 더플탭 등 기본 터치 이외의 경우는 직접 구현해줘야합니다.
게임에 따라 조금씩 차이가 있겠지만 주로 터치의 시작점과 끝점을 비교해 어떤 방향의 스와이프인지 판단하는 방법을 사용합니다.
스와이프 민감도 변수를 주어 터치, 스와이프를 동시에 판단하는 Swipe1()
정규화를 통해 방향을 판단하는 Swipe2()
코드
private Vector2 touchBeganPos;
private Vector2 touchEndedPos;
private Vector2 touchDif;
private float swipeSensitivity;
//스와이프와 터치
public void Swipe1()
{
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Began)
{
touchBeganPos = touch.position;
}
if (touch.phase == TouchPhase.Ended)
{
touchEndedPos = touch.position;
touchDif = (touchEndedPos - touchBeganPos);
//스와이프. 터치의 x이동거리나 y이동거리가 민감도보다 크면
if(Mathf.Abs(touchDif.y) > swipeSensitivity || Mathf.Abs(touchDif.x) > swipeSensitivity)
{
if (touchDif.y > 0 && Mathf.Abs(touchDif.y) > Mathf.Abs(touchDif.x))
{
Debug.Log("up");
}
else if (touchDif.y < 0 && Mathf.Abs(touchDif.y) > Mathf.Abs(touchDif.x))
{
Debug.Log("down");
}
else if(touchDif.x > 0 && Mathf.Abs(touchDif.y) < Mathf.Abs(touchDif.x))
{
Debug.Log("right");
}
else if(touchDif.x < 0 && Mathf.Abs(touchDif.y) < Mathf.Abs(touchDif.x))
{
Debug.Log("Left");
}
}
//터치.
else
{
Debug.Log("touch");
}
}
}
}
//스와이프
public void Swipe2()
{
if (Input.touches.Length > 0)
{
Touch t = Input.GetTouch(0);
if (t.phase == TouchPhase.Began)
{
//save began touch 2d point
firstPressPos = new Vector2(t.position.x, t.position.y);
}
if (t.phase == TouchPhase.Ended)
{
//save ended touch 2d point
secondPressPos = new Vector2(t.position.x, t.position.y);
//create vector from the two points
currentSwipe = new Vector3(secondPressPos.x - firstPressPos.x, secondPressPos.y - firstPressPos.y);
//normalize the 2d vector
currentSwipe.Normalize();
//swipe upwards
if (currentSwipe.y > 0 && currentSwipe.x > -0.5f && currentSwipe.x < 0.5f)
{
Debug.Log("up swipe");
}
//swipe down
if (currentSwipe.y < 0 && currentSwipe.x > -0.5f && currentSwipe.x < 0.5f)
{
Debug.Log("down swipe");
}
//swipe left
if (currentSwipe.x < 0 && currentSwipe.y > -0.5f && currentSwipe.y < 0.5f)
{
Debug.Log("left swipe");
}
//swipe right
if (currentSwipe.x > 0 && currentSwipe.y > -0.5f && currentSwipe.y < 0.5f)
{
Debug.Log("right swipe");
}
}
}
}
출처
'이전 게시물들 > 유니티' 카테고리의 다른 글
ToBeCuBe에 사용된 옵션 세팅 (0) | 2020.04.19 |
---|---|
플렛폼 구분 (0) | 2020.04.19 |
오브젝트 풀링 (0) | 2020.04.18 |
화면 비율, 해상도 레터박스(필러박스)로 해결하기 (0) | 2020.04.18 |
유니티 Google Play Store 앱 등록, GPGS, AdMob 추가 순서 (0) | 2020.04.08 |