본문 바로가기

Unity

[Unity] TouchPhase를 사용한 모바일 터치를 사용한 플레이어 움직이기

728x90

사용하는 환경에 따라 플레이어를 움직이게 하는 방법은 많다. 그 중에서 모바일 화면 터치로 플레이어를 움직이게 하는 방법에 대해 설명하겠다.

 

우선 TouchPhase는 터치 입력을 5가지 단계로 나타내준다. 다음은 5가지 상태에 관한 설명은 유니티 메뉴얼에서 가져온 것이다.

Began 화면에 터치가 시작된 상태를 나타냅니다.
Moved 손가락 터치가 화면에서 움직인 경우를 나타냅니다.
Stationary 터치를 했지만 움직이지 않은 상태를 나타냅니다.
Ended 사용자가 화면에서 손가락을 뗀 경우를 나타냅니다. 터치의 마지막 단계를 나타냅니다.
Canceled 사용자가 자신의 얼굴에 장치를 가져간 경우 또는 5개의 터치가 동시에 이루어진 경우에 시스템이 터치의 추적을 취소합니다. 터치의 마지막 단계를 나타냅니다.

이렇게 보면 Button이나 Touch로 플레이어를 움직이는 거는 다르지 않다는 것을 알 수 있을 것이다.

그렇게 해서 TouchPhase를 이용하여 플레이어 스크립트를 작성한다면 아래 처럼 된다.

 

OnMove 함수 코드

코드를 풀이하자면

만약 현재 어플리케이션이 플레이 되고 있는 플랫폼이 안드로이드라면 첫번째 조건문 안으로 들어간다.

 

그리고 첫번째 터치 상태가 Stationary이거나 Began이라면 두번째 조건에 들어가게 되고 이때는 모바일 화면을 한번 누르고 유지하고 있는 상태를 말하는 거다. 그렇다면 이때 첫번째 터치에 대한 정보를 가져와서 가운데를 기준으로 왼쪽에 있으면 왼쪽으로 이동하게 오른쪽에 있으면 오른쪽으로 이동할 수 있게 변수를 설정해준다.

 

다음에는 왼쪽, 오른쪽 움직임에 맞게 플레이어 이동이 매끄럽게 보이기 위해 뒤집어준다. 마지막으로 만약 첫번째 터치의 상태가 Ended가 된다면 그에 맞게 움직임 변수를 바꿔준다.

 

정해진 변수 설정에 맞게 플레이어를 이동시켜준다.

728x90