Game Development, 게임개발/개발

[Unity] 가상패드 만들고 가상패드에서 벡터 가져오기

게임이 더 좋아 2020. 3. 1. 11:40
반응형
728x170

이것또한 공부중이니

더 효율적인 것이 있으면 댓글주세요 ㅎ

 

 

 

가상패드를 왜 만드느냐???

 

방향을 밖에서 입력받아오려고 만들었는데

이렇게 대충 생겼다

 

모바일에선 저렇게 생긴 패드가 많은데 어떻게 만들었느냐???

 

2D Object 중에서 New Sprite를 2개 만든다

Sprite 모양은 Knob이다.

색도 바꾸고

두개를 겹쳐야해서 위에 올 Sprite를 Children 으로 만들고 Scale 조정을 해준다

 

겹쳐서 보이지 않을 경우 Layer 조정을 해준다.

 

 

 

그럼 이렇게 나온다.

 

이제 프로그래밍 단계로 넘어가자

 

 

이 스크립트는 방향과 힘을 입력받기 위한 패드를 만들기 위한 것이었다.  힘을 위한 가상패드는 위와 같이 비슷하게 만들면 된다.

 

우선 RectTransform 값을 받아와야한다. 기준이 있어야 방향을 판단할 수 있으니까

 

또한 radius는 해석하면 반지름이다 ㅎㅎ 

 

 

HandleOut은 내가 만든 함수고

 

저거는 방향을 입력받아서 이용해먹기 위한 함수였다.

 

중요한게 OnDrag, OnPointerDown, OnPointerUp 이고 PointerEventData가 핵심이다.

이 모든 것들은 유니티에 내장되어 있지만

 

저기 위에처럼 Using 구문을 사용해서 가져와야 한다.

 

 

 Vector2 value = eventData.position - (Vector2)rect_Joypad.position;

        value = Vector2.ClampMagnitude(value, radius);

        rect_Joystick.localPosition = value;

        position = value.normalized;

 

이 라인이 방향을 받아오는 것이다. EventData.Position 이 마우스 포인터의 위치다.

 

 ClampMagnitude는 무엇이냐하면 최댓값을 제한하는 함수다. 그래서 Joystick이 (하얀색 원)이 검은색 밖으로 못나가게 하는 것이다.  포인터로 끌어온다고해서 막 다 끌어오면 안되니까. 

 

그리고 normalized는 정규화인데, 그냥 벡터의 합을 1로 만드는 것이다.  

 

여기까지가 가상패드 만드는 과정이었고

 

나중에 더 업데이트 되지 않을까??

 

 

 

 

728x90
반응형
그리드형