Unity/Engine

transform.rotation vs transform.localRotation

잡템 2022. 2. 5. 21:31

Transform.rotation

게임 오브젝트의 절대적인 회전 각도를 나타낸다.

Transform.localRotation

게임 오브젝트의 상대적인 회전 각도를 나타낸다.

 

둘 다 쿼터니언으로 오일러 각도를 변환해서 대입해야 하며 

transform.roation or tranform.localRotaion = Quaternion.Euler(x, y, z) 이와 같이 대입해야 한다

 

부모가 따로 없는 오브젝트의 경우 rotation과 localRotaion이 같지만 자식 개체의 경우 달라지게 된다.

예를 들어 tranform.rotaion = Quaternion.Euler(0f, 0f, 0f) 이와 같이 자식 개체에 스크립트를 삽입한 후 실행하여

부모 오브젝트를 회전시키게 될 경우 결과는 어떻게 될까?

 

답은 부모가 회전한 만큼 각도를 마이너스시킨 결과가 나온다 

 

정확히는 부모의 회전각도와 상관없이 절대 각도 (0 , 0 , 0)을 맞춰주기 위해 그에 맞춰 오브젝트가 회전하게 되어

 

내 경우 부모의 회전과 상관없이 특정 각도로 자식 개체의 각도를 고정시키려는 목적이었으나 결과가 다르게나와

 

헤매는 경우가 있었다. 이를 올바르게 지정 한각 도로 고정시키려면

 

tranform.localRotaion = Quaternion.Euler(0f, 0f, 0f); 과 같이 자식 개체의 경우 상대 각도로 지정해주어야 한다.