본문 바로가기
[ Unity ]/- 유니티 실습

유니티 - [2D캐릭터 회전]

by MRG 2021. 5. 18.
728x90
반응형

728x90

https://assetstore.unity.com/packages/2d/characters/bolt-2d-dinorun-assets-pack-188721

 

Bolt 2D DinoRun Assets Pack | 2D 캐릭터 | Unity Asset Store

Elevate your workflow with the Bolt 2D DinoRun Assets Pack asset from Goldmetal. Find this & more 캐릭터 on the Unity Asset Store.

assetstore.unity.com

▣ 여기서 에셋을 다운받으세요.

 

▣ 우선 코드를 진행하기전에 Transform에서 어떤 값을 조절해야 2D 캐릭터가 회전하는지 확인해보겠습니다. 

player에 오브젝트에서 Transform에 Rotation 회전값을 바꿔야 회전이 가능합니다.

그럼 여기서 x, y, z 값을 모두 값을 바꿔보세요 그럼 어떤값이 회전해야 캐릭터가 반대쪽으로 방향을 바꾸는지 확인할 수 있습니다. 

 

▣ Y 값을 180으로 주게되면 반대쪽으로 방향이 바뀌는걸 확인할 수 있습니다. 

 

▣ 그리고 Rotation값이 아닌 Scale 값을 바꿔서 회전하게 할 수도 있습니다. 

x값을 원래 값인 2가 아닌 -2로 바꿔서 회전할 수 있습니다. 

 

▣ 여기서 중요한건 그럼 어떤걸 이용해서 회전을 해야할지에 대한 선택입니다. 

그건 여러분들이 상황에 따라 다른데 예를 들어 캐릭터에 스킨이 있다고 생각해보겠습니다.

모든 스킨에 이미지 크기가 같다고 하면 Scale을 바꿔서 회전해도 상관이 없습니다.

하지만 모든 스킨에 이미지 크기가 다르다고 한다면 스킨이 바뀔때마다 

크기를 매번 다 다르게 바꿔줘야하는 문제가 생깁니다.

그럴때에는 회전값 Rotation값을 바꿔서 진행해야합니다. 

이점을 생각하시면서 코드를 진행하는 방법을 익히는게 중요합니다. 

 

▣ Rotation값을 바꾸는 코드는 정말 많이 있습니다.

이건 그중 한가지 방법입니다. 저는 Vector3 값으로 회전값을 쉽게 하기 위해

localEulerAngles를 사용했습니다. 

local을 사용하는 이유는 간단하게 이야기하면 자신에 회전값에 기준으로 회전을 하기 위함입니다.

예를 들어 내 부모에 회전값이 있는데 local로 하지 않고 그냥 Rotaion값을 바꾸게 되면 

부모에 회전값에 영향을 받기 때문입니다. 

이부분은 나중에 3D게임을 다룰때 자세하게 다뤄보도록 하겠습니다. 

 

▣ transform.localEulerAngles = new Vector3(0, 0, 0) 백터에 값으로 회전을 주었습니다.

우리가 Y 값을 0으로 할때와 180으로 할때에 차이를 확인했습니다. 그거에 맞춰 백터값을 지정해주고 

저장을해서 실행해보면 공룡이 잘 회전되는걸 확인할 수 있습니다. 

 

▣ localScale값도 마찬가지 입니다. 동일하게 locale로 진행했고 백터값으로 아까 우리가 Transform에서 변경했던 

그 값처럼 백터값에 넣어서 코드를 완성하고 확인하면 잘 회전되는걸 확인할 수 있습니다.

 

▣ 이제 회전값과 이동하는 값을 함께 넣어 캐릭터를 방향에 맞게 이동해보세요.

 

 

 

 

▣ 월드 좌표 기준으로 플레이어 이동 처리

728x90
반응형

댓글