Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

시작은 0부터

3. 축, Rotate 와 Position 본문

Unity 학습일지

3. 축, Rotate 와 Position

0base 2022. 8. 10. 23:31

Rotate, 해당 축을 기준으로 회전한다. Position X,Y,Z 와 Rotation의 X,Y,Z가 헷갈리는 경우에는 각 방향의 축을 나타내는 화살표에 면 방향을 한 돌림판을 꽂아놨다고 생각하면 이해하기 쉽다. 예로, Rotate.X 는 좌우 방향의 막대기에 꽂혀 있는 돌림판이고, 이 돌림판은  좌우 방향을 면으로 하고 있으니 회전은 Z축으로 한다. 그러므로 Rotate.X에 값을 주면 Z축(앞뒤) 회전을 하는 것이다.

 

transform.Rotate를 사용하면 기존 rotation(회전도)에 회전값을 더한다. 그런데 처음부터 메쉬가 유니티 시스템에 맞게 축 3개(X, Y, Z)가 설정되어 있지 않다면 메쉬를 제대로 사용하기 위해 회전을 해야한다. 그런데 회전이 설정된 상태에서 transform.Translate 를 사용하여 위치값을 이동시키면 내가 원하는 방향으로 이동하는 것이 아니라 회전된 값을 기준으로 위치가 이동된다. 예를 들어 축이 비틀린 메쉬를 쓰기 위해 축을 회전시켜 맞췄더니 x, y 가 각각 뒤바뀌었다면, 이 상태에서 내가 메쉬를 회전시켜서 보기에 맞춰놨다고 x값이나 y값을 줬을 때 원하는 방향으로 나가는게 아니라 x 에 값을 주면 y축으로 움직이거나 하는 식인 것이다. 이러한 혼란스런 문제를 막기위한 대안이 있다.

 

해당 메쉬를 사용하는 오브젝트를 자식개체로 하는 빈 오브젝트를 만들어 그 오브젝트 값을 변경하면 된다. 부모 오브젝트는 자식 오브젝트의 회전도에 관계없이 자신을 기준으로 움직이기 때문에 부모 오브젝트에 값을 주어야 메쉬를 회전시켜도 원하는 방향을 유니티 상에서 직관적으로 이동할 수 있는 것이다.