본문 바로가기

Unity

[Unity3D]JoyStick(D pad)캐릭터 이동 컨트롤러 제작(1)

1. 서론

오랜만에 유니티 작업으로 찾아왔다. 거의 세 달 만 인 것 같은데... 블로그에 어떤 자료를 올릴까 고민이 많았다.

필자는 전부 다 테스트하고 정말 쓸만 한것들만 올리자는 명목 하에 블로그를 개설한 것이기에... 방대한 자료들 중에서 쓸만한 정보, 정확한 정보를 나누고 싶었고, 기록하고 싶었다. 기다린 사람은 없겠지만... 아무튼 바로 보자.

 

그림1. 조이스틱 예제(유니티)

조이스틱 혹은 디-패드 라고 불리고 모바일 게임에서 흔히 보이는 이러한 십자 혹은 동그란 모양을 보았을 것이다.

모바일 게임에서 흔히 보이는 조작 방식인 것이다.

 

우리는 이것을 어떻게 하면 효율적으로 구현할 수 있을지에 대해 생각하고 필자의 코드를 판가름해주길 바란다.

 

조이스틱을 화면에 띄워두는 일반적인 방법도 있겠지만, 개인적으로 좁디좁은 화면에 조이스틱까지 화면을 일부 차지한다면, 유저가 보는 화면은 좁을 거란 생각이 들었다. 실제로 모바일 게임을 할 때 조이스틱과 스킬 버튼들이 너~~ 무 싫었다.

 

그래서 어떻게 개발할 것인가! 본론을 보도록 하자.

2. 본론

그림2. 유니티에서의 씬 뷰와 하이어라키 뷰

 

1. Canvas를 생성한다. (EventSystem이 자동으로 생길 것이다.)

2. BackGround 이미지를 생성한다.

3. JoyStickRange 이미지를 생성한다.

4. JoyStick 이미지를 생성한다.

 

구성은 이렇다. Background이미지는 알파 값을 0을 준 상태이기 때문에 투명하게 보이고 JoyStickRange는 알파값을 중간값 정도 주었다.

 

그림3. 백그라운드 배치와 조이스틱 레인지, 조이스틱의 인스펙터 뷰

RectTransform 위치가 0,0,0에 오게 배치하면 엇나갈 일이 없다. 배치는 이 정도로 하면 되겠다.

 

우리는 유니티에서 using UnityEngine.EventSystems 이 녀석을 사용할 것인데 유니티 using선언부에 써주면 되겠다.

유니티 API에 저 using문을 검색하면 많은 자료가 나오니 참고 하자.

 

우린 그중에서도 IPointerDownHandler, IPointerUpHandler, IDragHandler, IEndDragHandler, IPointerClickHandler 이 이벤트 녀석들을 사용할 예정이다.

 

각 핸들러에 대한 설명은 유니티 API에 있으니 확인하길 바란다.

 

3. 결론

글이 갑자기 길어지는 바람에 코드 설명은 다음 글에서 하도록 하겠다.

그냥 짧게 쓰려고 했는데 사진 때문인지 서론이 길어서 인지 길어져 버렸다.