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); 과 같이 자식 개체의 경우 상대 각도로 지정해주어야 한다.