유니티) 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;
댓글
댓글 쓰기