Unity Transform.localEulerAngles

RudinP·2023년 3월 24일
0

Study

목록 보기
1/227
post-thumbnail

💭상황

  • Horizontal 입력을 받으면 z축 회전, Vertical 입력을 받으면 x축 회전을 구현해야 함

  • 처음에는 마우스 입력 코드와 같이 transform.localEulerAngle에 매번 값을 가져와 더하는 것으로 구현함.

❗문제

  • z축 회전은 정상적으로 작동하지만, x축 회전은 최대 90도 까지만 회전 후 더 이상 회전하지 않는 문제가 발생함.

❓이유

  • 짐벌락(Gimbal Lock) 현상

    업로드중..
        유니티에서는 오일러각도를 사용하는 쪽이 사용자 입장에서는 이해하기 쉽다고 함.
    실제로는 쿼터니언을 사용하여 연산을 수행하는데, 여기에는 w인자까지 있어 직관적으로 이해하기 어렵기 때문에 오일러각도를 사용한다고 한다.
    그런데 오일러각을 사용하게되면 x축 회전하다가 y축이랑 합쳐져서 자유롭게 각도를 변경하지 못한다던지 하는 문제가 발생한다고 함. 유니티 내부 연산 문제라고...

💡해결법

transform.Rotate(new Vector3(xRot, yRot, zRot));
해당 메소드를 사용하면 쿼터니언 연산이 실행되어 문제를 해결할 수 있다.
실제로 잘 돌아가도록 해결 완료.

profile
곰을 좋아합니다. <a href = "https://github.com/RudinP">github</a>

0개의 댓글