유니티) rotate, quaternion 방법 정리


* Euler angle
- 유니티의 Scene View 에서 회전 툴을 선택했을때 나타나는 3개의 원


* Rotate 함수 사용
- transform.Rotate(Vector3.up, speed, Space.Word);


* Euler 과 Quaternion 
- transform.rotation 도 Quaternion 기반
    
    - 때문에 위와 같이 쓰면 에러 발생
    
    - 이렇게 써야 정상 작동


* Quaternion 사용

- Quaternion 변수를 생성하여 사용


- eulerAngles 를 사용(World Space에 대한 객체의 최전값)
- localEulerAngle(해당 객체 기준 local 값)



- Quaternion 에서 사용하는 99% 함수


Quaternion.LookRotation(벡터값)
    
    : 타겟 기준으로 회전
    Vector3 relativePos = target.position - transform.position;
    transform.rotation = Quaternion.LookRotation(relativePos);


Quaternion.Angle(쿼터니언A, 쿼터니언B)
    
    : 두 개의 쿼터니언 사이 각 반환
    float angle = Quaternion.Angle(transform.rotation, target.rotation);


Quaternion.Euler(x,y,z)
    
    : 각 축을 기준으로 기울이기
    GetComponent<Rigidbody>().rotation = Quaternion.Euler(0f, 0f, tilt);
    z축을 기준으로 리지드바디 회전
    
    Quaternion rotation = Quaternion.Euler(new Vector3(0, 30, 0));   


Quaternion.Slerp(쿼터니언A, 쿼터니언B, t)
    : A에서 B로 t의 속도로 보간 회전
    transform.rotation = Quaternion.Slerp(from.rotation, to.rotation, Time.time * speed);


Quaternion.FromToRotation
    
    : fromDirection에서 toDirection으로 회전한 rotation을 생성
    transform.rotation = Quaternion.FromToRotation(Vector3.up, transform.forward);


Quaternion.identity
    
    : 초기화, 회전 없음. 월드 좌표 축 or 부모의 축으로 정렬
    transform.rotation = Quaternion.identity;





댓글