ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Unity - Rotation(Euler angle, Quaternion)
    Search: Unity Unity 2021. 3. 25. 23:39

     

    단순 사용 요약

     

    기존 회전 상태와 상관 없이 지정한 각도로 회전된 상태를 만들기.

    transform.rotation = Quaternion.Euler(0, 50, 0);

     

    기존 회전값에서 추가로 회전할 각도를 인자로 받아 회전 만들기.

    transform.Rotate(new Vector3(0, 50, 0));

     

    Euler angle

    Euler angle은 친숙한 좌표계로 x,y,z축을 기준으로 0~360도만큼 회전시키것이다.

    Euler angle: Yaw, Pitch, Roll

    사용하기 편하긴 하지만 Euler angle은 Gimbal lock이라는 문제점이 있다.

     

    https://youtu.be/zc8b2Jo7mno

     

    오일러 회전 값 얻어 오기

    Debug.Log("Angle :" + transform.eulerAngles)

     

     

    Quaternion

     

    쿼터니언, 사원수, 해밀턴 수라 불린다.

    복소수를 확장해서 만든 수 체계다.

     

    q = Quaternion.identity; //초기값.
    
    q1 = Quaternion.Euler(10,20,30); //x축으로 10도, y축으로 20도, z축으로 30도의 회전 값을 가지도록 객체를 회전하라
    q2.eulerAngle = new Vector3(10,20,30);
    
    //기타 함수들
    Quaternion.LookRotation
    Quaternion.Angle
    Quaternion.Slerp
    Quaternion.FromToRotation

     

     

    Transform

     

    Transform.Rotation은 GameObject의 절대적인 회전 각도다.

    transform.Rotation = Quaternion.Euler(x, y, z); ///EulerAngle을 Quaternion으로 변환해준다.

     

    Transform.localRotation

    부모가 있을 경우 부모를 기준으로 상대적인 회전 각도를 나타낸다. 부모가 없을 경우에는 Transform.Rotation과 동일하다

     

    Transform.Rotate

    EulerAngle을 넣어서 회전 가능.
    GameObject의 절대적인 회전 각도로 회전할 경우에는 Space.World 옵션을 사용하면 된다.

    // 게임 오브젝트 기준으로 회전
    transform.Rotate(new Vector3(10f, 20f, 30f) * Time.deltaTime);
    
    // 절대 좌표 기준으로 회전
    transform.Rotate(new Vector3(10f, 20f, 30f) * Time.deltaTime, Space.World);

     

    Transform.RotateAround

    지구가 태양 주위를 공전하는 것 처럼 특정 좌표를 기준으로 회전할 경우 사용.

     

    댓글