position은 익숙한데 Quaternion은 영 어색하다.
아직 삐약🐣
유니티 공식 문서로 검색해 보면
쿼터니언(Quaternions)은 회전을 표현하기 위해 사용됩니다.
이라고 나와 있다.
사실 저번에도 찾아봤다. 기억이 안났을 뿐... 이번에 확실히 이해해내고 말꺼다!
positon이랑 친구인데 위치가 아니라 회전을 관리해주는 친구다
GameObject go = Instantiate<GameObject>(effectPrefabs[index], position, Quaternion.identity);
사실 이 글에 핵심. 내가 다시는 구글에 Quaternion을 검색하지 않기 위해 쓰는 글.
아까 위에서 나왔던 오일러 연산(Euler
)이 Quaternion을 쓰는 이유다. 오일러 계산이 짐벌락 현상을 막아주기 때문
- 짐벌 락(Gimbal Lock) :
3개의 짐벌을 이용해 회전하는 3차원에서 두 개의 짐벌이 겹쳐질 경우 회전축 하나가 사라지는 현상
(그래서 2D 게임보다 3D 게임에서 quaternion을 훨씬 많이 봤나보다)
오일러 연산은 스크립팅을 통해서 회전하는 축의 순서를 정해줄 수 있기 때문에 겹치게 되지 않게 된다.