▣ 코드 설명
Vector3 direction = target.position - transform.position;
현재 오브젝트에서 목표 오브젝트까지의 방향벡터를 구합니다.
Quaternion targetRotation = Quaternion.LookRotation(direction);
이 방향벡터를 기준으로 회전하기 위한 쿼터니언을 만듭니다. LookRotation 함수는 주어진 방향을 바라보는 쿼터니언을 반환합니다.
Quaternion.Lerp(transform.rotation, targetRotation, rotationSpeed * Time.deltaTime);
현재 회전(transform.rotation)과 목표 회전(targetRotation) 사이를 부드럽게 보간하여 회전합니다. Lerp 함수는 두 회전 사이를 선형적으로 보관하며, rotationSpeed * Time.deltaTime은 매 프레임마다 회전 속도를 조정하는 데 사용됩니다.
Debug.Log("현재 회전 값: " + transform.rotation.eulerAngles);
현재 오브젝트의 회전 값을 Euler 각도로 출력합니다. Euler 각도는 x, y, z 축 기준의 회전각을 의미합니다.
▣ 쿼터니언(Quaternion)과 회전
쿼터니언(Quaternion)은 Unity에서 회전을 표현하기 위한 데이터 구조입니다.
이는 4차원 벡터(실수 1개, 허수 3개)로 이루어져 있습니다. 회전 작업을 수행할 때, 회전각이나 방향에 대한 수학적 계산을 처리하는 데 주로 사용됩니다.
▣ Unity에서 회전을 표현하는 방법으로는 두 가지가 있습니다:
Euler 각도: x, y, z 축을 기준으로 각도를 지정하는 방식. 하지만 각도 계산 시, "짐벌 락(Gimbal Lock)" 문제가 발생할 수 있습니다. 이는 여러 축에서 회전할 때 특정 축의 회전이 불가능해지는 현상입니다.
쿼터니언: 짐벌 락 문제를 해결하고, 더 부드럽고 연속적인 회전을 표현할 수 있는 방식입니다. 이를 통해 축을 기반으로 한 회전뿐만 아니라, 두 객체 사이의 회전 계산도 더 쉽게 처리할 수 있습니다.
▣ 왜 사용하는가?
회전의 안정성: 쿼터니언을 사용하면 짐벌 락 문제를 방지할 수 있습니다.
부드러운 회전: 스무스한 회전과 연속적인 회전 작업에서 유용합니다.
두 벡터 사이의 회전: 쿼터니언을 사용하면 두 방향벡터 사이의 회전을 쉽게 계산할 수 있습니다.
성능: 회전을 연속적으로 계산하는 데 있어 효율적입니다.
▣ 언제 사용하는가?
부드러운 회전(예: 카메라 회전):
물체나 카메라가 부드럽게 회전해야 할 때 쿼터니언을 사용하여 처리합니다.
두 객체 사이의 회전:
하나의 객체가 다른 객체를 향하도록 할 때(예: 적이 플레이어를 향하도록 회전).
회전 보간:
두 쿼터니언 사이에서 회전을 점진적으로 이동하는 상황(예: 캐릭터가 점진적으로 목표를 바라보도록 회전).
https://docs.unity3d.com/ScriptReference/Quaternion.html
Unity - Scripting API: Quaternion
A quaternion is a four-tuple of real numbers {x,y,z,w}. A quaternion is a mathematically convenient alternative to the euler angle representation. You can interpolate a quaternion without experiencing gimbal lock. You can also use a quaternion to concatena
docs.unity3d.com
https://docs.unity3d.com/ScriptReference/Quaternion.LookRotation.html
Unity - Scripting API: Quaternion.LookRotation
Z axis will be aligned with forward, X axis aligned with cross product between forward and upwards, and Y axis aligned with cross product between Z and X. Returns identity if the magnitude of forward is zero. If forward and upwards are colinear, or if the
docs.unity3d.com
https://docs.unity3d.com/ScriptReference/Quaternion.Lerp.html
'[ Unity ] > - 유니티 실습' 카테고리의 다른 글
유니티 2D Object Ping Pong (0) | 2024.09.11 |
---|---|
유니티 2D 점프, 더블점프 (7) | 2024.09.10 |
유니티 싱글톤 (4) | 2024.09.08 |
유니티 3D ParticleSystem (0) | 2024.09.08 |
유니티 제네릭(Generic) (1) | 2024.09.07 |
댓글