Unity/Unity 리서치

Mobile에서 터치 드래그 구현

lipnus 2021. 6. 6. 13:00
반응형

 

드래그를 하면 카메라가 이동하는 코드.

RTS게임의 Top View에서 땅을 잡아 끌면 화면이 이동하는 효과를 위해 구현

 

① TouchCount : 모바일 디바이스 디스플레이에 손꾸락이 몇개 올려져 있는가?

② Input.Touch(2) : 이거면 3번째로 올라온 손가락을 의미

예제 코드

using UnityEngine.UI;
using UnityEngine;

public class TouchInput : MonoBehaviour
{
    private float Speed = 0.25f;
    private Vector2 nowPos, prePos;
    private Vector3 movePos;

    public Transform player;
    
    public Text text1;
    public Text text2;
    public Text text3;

    void Update()
    {
        text3.text = "터치카운트 : " + Input.touchCount;

        if(Input.touchCount == 1)
        {
            Touch touch = Input.GetTouch (0);
            if(touch.phase == TouchPhase.Began)
            {
                prePos = touch.position - touch.deltaPosition;
            }
            else if(touch.phase == TouchPhase.Moved)
            {
                nowPos = touch.position - touch.deltaPosition;
                movePos = (Vector3)(prePos - nowPos) * Time.deltaTime * Speed;
                player.transform.Translate(movePos); 
                prePos = touch.position - touch.deltaPosition;
            }
        }
    }
}

 

주의할 점

손가락이 디스플레이 위에 올라와 있지 않은 상태에서 GetTouch()를 하면 그 아래 코드는 다 적용이 안됨.

 

손가락 하나만 올리고 아래 함수를 실행하면 (첫번째 손가락은 0)

Input. GetTouch(1)

 

두번째 손가락은 없으니, 위 코드는 적용이 안됨.

에러를 띄우진 않고 continue; 하는 것 같이 동작.

 

구현 시 손가락 개수별 예외처리를 해줘야 한다.

 

 

 

반응형