시작은 0부터
3. 축, Rotate 와 Position 본문
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축으로 움직이거나 하는 식인 것이다. 이러한 혼란스런 문제를 막기위한 대안이 있다.
해당 메쉬를 사용하는 오브젝트를 자식개체로 하는 빈 오브젝트를 만들어 그 오브젝트 값을 변경하면 된다. 부모 오브젝트는 자식 오브젝트의 회전도에 관계없이 자신을 기준으로 움직이기 때문에 부모 오브젝트에 값을 주어야 메쉬를 회전시켜도 원하는 방향을 유니티 상에서 직관적으로 이동할 수 있는 것이다.
'Unity 학습일지' 카테고리의 다른 글
6. 코루틴 문제, Instantiate 와 SetActive (0) | 2022.08.14 |
---|---|
5. 코루틴(Coroutine), 자식 오브젝트 가져오기, Mathf.SmoothDampAngle (0) | 2022.08.13 |
4. RigidBody , LookAt, Material, 축 이동과 기울기 (0) | 2022.08.12 |
2. Component, RigidBody, AddForce(), GetAxis(), velocity, Collision, Trigger, FindObjectOfType (0) | 2022.08.09 |
1. 콘솔 출력, 클래스, 벡터(Vector), Time.deltaTime (0) | 2022.08.08 |