Deff_Dev

[Unity/C#] Quaternion.LookRotation() 본문

Unity(유니티)/유니티 공부

[Unity/C#] Quaternion.LookRotation()

Deff_a 2024. 5. 27. 23:00

 

Quaternion.LookRotation(Vector3 forward, Vector3 upwards = Vector3.up)

 

forward 방향으로 회전하는 Quaternion 값을 반환한다.

여기서 upwards는 기본 값으로 Vector3.up이 사용되고 회전할 오브젝트의 y축이 바라보는 방향을 얘기한다.

 

위 사진처럼 upwordsvector3.right로 설정한다면 y축이 오른쪽을 바라보도록 오브젝트를 회전시킨다.

 

 

LookAt() 함수와 다른 점은 뭘까 ?

  •  LookAt() 함수는 회전하기 위해 타겟의 정보가 필요하고 Quaternion.LookRotation() 함수는 타겟 정보가 없어도 회전하고 싶은 방향 값을 알고 있다면 회전을 할 수있다.

Quaternion.LookRotation()이용한 예제

도끼를 사용해 나무를 베었을 때, 나무 자원이 생성되는 기능을 만든다고 해보자.

 

LookRotation함수를 이용해 회전 값을 주지 않았을 때는 위와 같이 나무가 도끼로 벤 방향이 아닌 엉뚱한 방향에서 생성되게된다.

 

LookRotation 함수를 이용하여 회전을 시켜주게 된다면 위와 같이 자연스럽게 나무가 등장하게된다.

Instantiate(woodPrefab, hitPoint + Vector3.up, Quaternion.LookRotation(hitNormal));

hitPoint: Raycast가 나무에 맞은 지점,  hitNormal: Raycast가 나무에 맞은 지점에서 바깥쪽으로 수직인 법선 벡터 

 

 

 

여기서 upwards를 vector3.right로 설정한다면 어떻게 될까 ?

Instantiate(woodPrefab, hitPoint + Vector3.up, Quaternion.LookRotation(hitNormal, Vector3.right));

 

나무 자원 오브젝트의 y축이 오른쪽을 바라보도록 회전하게 된다.