유니티 물체 회전시키는법 (Quaternion)
1. Rotate 사용
void Start()
{
Quaternion targetRotation = Quaternion.Euler(new Vector3(45, 0, 0));
transform.rotation = targetRotation;
transform.Rotate(new Vector3(30, 0, 0));
}
2. 쿼터니언을 백터3로 변환 -> 로테이션 더하기 -> 다시 쿼터니언으로 변환
void Start()
{
Quaternion originalRotation = transform.rotation;
//쿼터니언 값을 백터3로 바꿔서 더해주고 다시 쿼터니언으로 바꿔줌
Vector3 originalRotationInvector3 = originalRotation.eulerAngles;
Vector3 targetRotationVec = originalRotationInvector3 + new Vector3(30, 0, 0);
Quaternion targetRotation = Quaternion.Euler(targetRotationVec);
transform.rotation = targetRotation;
}
3. Quaternion끼리 곱해주기
void Start()
{
Quaternion originalRotation = Quaternion.Euler(new Vector3(45, 0, 0));
Quaternion plusRotation = Quaternion.Euler(new Vector3(30, 0, 0));
Quaternion targetRotation = plusRotation * originalRotation;
transform.rotation = targetRotation;
}
참고
1. Quaternion에서 Rotation 값 Vector3로 가져오는 법
void Start()
{
//Rotation (45,0,0) 상태임
Quaternion originalRotation = transform.rotation;
//eulerAngles라는 함수 사용하면 가능
Vector3 originalRotationInvector3 = originalRotation.eulerAngles;
Debug.Log(originalRotationInvector3);
}