어떤 오브젝트의 포지션값을 받아오기는 쉽습니다.


gameObject.transform.position 으로 쉽게 받을 수 있죠.



그래서 각도값도 이렇게 받으면 되겠지 싶어서

gameObject.transform.rotation 으로 각도를 받아오려 시도하면

다음과 같이 이상한 소수만 받아집니다.



이 소수는 쿼터니언 값입니다.


우리가 흔히 사용하는 0~360도의 각도는 오일러각도인데,

오일러각을 사용하여 오브젝트를 x, y, z축으로 회전시키다 보면 짐벌락 현상이 일어나기 때문에

유니티에서는 오일러값을 쿼터니언값으로 변환하여 사용합니다.

그래서 저렇게 쿼터니언값이 출력되는 것입니다.



짐벌락 현상에 관한 설명은 다음 영상이 잘 설명해주고있으니 링크로 대체하겠습니다.

https://www.youtube.com/watch?v=zc8b2Jo7mno



즉, 유니티를 이용하는 사람들을 위하여 Transform 인스팩터의 rotation 값은 사람들에게 친숙한 오일러 각으로 표시되지만,

시스템 내부에서는 여러가지 장점을 위해 오일러 각을 쿼터니언으로 변경해서 사용한다는 것입니다.


그래서 쿼터니언값을 오일러각으로 받아오고 싶다면 다음과같은 명령어를 쓰면 됩니다.


둘 다 같은 결과가 출력됩니다.



또는, 오브젝트의 각도를 직접적으로 바꿔주고 싶다면 다음과 같이 사용하면 됩니다.





쿼터니언과 오일러각에 관한 더 자세한 설명은 유니티 문서고에서 확인할 수 있습니다.

https://docs.unity3d.com/kr/2018.1/Manual/QuaternionAndEulerRotationsInUnity.html

반응형