이것또한 공부중이니
더 효율적인 것이 있으면 댓글주세요 ㅎ
가상패드를 왜 만드느냐???
방향을 밖에서 입력받아오려고 만들었는데
모바일에선 저렇게 생긴 패드가 많은데 어떻게 만들었느냐???
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로 만드는 것이다.
여기까지가 가상패드 만드는 과정이었고
나중에 더 업데이트 되지 않을까??
'Game Development, 게임개발 > 개발' 카테고리의 다른 글
카메라 플레이어에게 고정하기, Unity 3D (0) | 2021.02.23 |
---|---|
SerializeField의 개념 [Unity] (7) | 2020.04.15 |
[Unity] 2D에서 충돌하면 떨어뜨리기 (0) | 2020.03.29 |
[Unity] 2D에서 자석 구현하기 !! (6) | 2020.03.13 |
[Unity] 게임오브젝트 배열로 받기 (clone 생성시) (0) | 2020.02.29 |