본문 바로가기
유니티/유니티 문법?

유니티 물체 회전시키는법 (Quaternion)

by xortl98 2021. 4. 12.
728x90

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);

 

}

 

'유니티 > 유니티 문법?' 카테고리의 다른 글

싱글톤 (점수 관리 같은거 할 때)  (2) 2021.04.19
코루틴 (대기시간 주는 것)  (0) 2021.04.19
리스트 (실시간으로 입력 받음)  (0) 2021.04.18
인스턴스화  (0) 2021.04.12
유니티 쿼터니언 Lerp  (0) 2021.04.12