반응형
Unity에서는Transform 컴포넌트를 사용하여 게임 오브젝트를 회전시킬 수 있습니다.
1. Transform.Rotate()
Transform.Rotate() 함수를 사용하여 게임 오브젝트를 회전시킬 수 있습니다. 이 함수는 세 개의 인자를 받습니다.
public void Rotate(Vector3 eulerAngles, Space relativeTo = Space.Self);
- eulerAngles: 회전시킬 방향 벡터입니다.
- relativeTo: 회전시킬 기준 좌표계를 지정합니다. 생략하면 Space.Self로 설정됩니다.
// 예시: 오브젝트를 x축으로 30도 회전
transform.Rotate(new Vector3(30, 0, 0), Space.Self);
2. Transform.rotation
Transform.rotation 속성을 사용하여 게임 오브젝트의 회전값을 직접 변경할 수 있습니다. 이 속성은 Quaternion 자료형을 사용합니다.
// 예시: 오브젝트를 y축으로 45도 회전
transform.rotation = Quaternion.Euler(0, 45, 0);
3. Rigidbody 컴포넌트
게임 오브젝트가 Rigidbody 컴포넌트를 가지고 있다면, Rigidbody 컴포넌트의 AddTorque() 함수를 사용하여 회전력을 가할 수 있습니다.
public void AddTorque(Vector3 torque, ForceMode mode = ForceMode.Force);
- torque: 회전력 벡터입니다.
- mode: 회전력의 적용 모드를 지정합니다. 생략하면 ForceMode.Force로 설정됩니다.
// 예시: 회전력을 y축으로 100만큼 가할 때
rigidbody.AddTorque(new Vector3(0, 100, 0), ForceMode.Force);
위와 같은 방법으로 Unity에서 게임 오브젝트를 회전시킬 수 있습니다.
4. Quaternion과 Euler Angle
Quaternion과 Euler Angle은 회전값을 표현하는 두 가지 방법입니다.
Quaternion은 4차원 벡터로 회전값을 표현합니다. Unity에서는 Quaternion.Euler() 함수를 사용하여 Euler Angle을 Quaternion으로 변환할 수 있습니다.
// 예시: Euler Angle을 Quaternion으로 변환
Quaternion rotation = Quaternion.Euler(30, 45, 60);
Euler Angle은 x, y, z 축을 기준으로 회전값을 표현합니다. Transform.rotation에서는 Euler Angle을 사용하여 회전값을 표현합니다.
// 예시: 오브젝트를 x, y, z 축을 기준으로 회전시키기
transform.rotation = Quaternion.Euler(30, 45, 60);
5. Rotation Order
Euler Angle로 회전값을 표현할 때, 회전 순서에 따라 다른 결과가 나타날 수 있습니다. Unity에서는 Rotation Order를 설정하여 회전 순서를 변경할 수 있습니다.
Transform.rotation에서 회전 순서는 Rotation Order 속성을 통해 설정할 수 있습니다.
// 예시: x, y, z 순서로 회전시키기
transform.rotation = Quaternion.Euler(30, 45, 60);
transform.rotation = Quaternion.Euler(60, 45, 30); // 같은 Euler Angle이지만 결과가 다름
회전 순서에 따라 결과가 다르기 때문에, 회전값을 표현할 때에는 Quaternion을 사용하는 것이 좋습니다.
'Unity' 카테고리의 다른 글
Unity 수학 함수 Mathf (0) | 2023.03.22 |
---|---|
Unity에서 오일러각과 쿼터니언 (0) | 2023.03.21 |
Unity에서 게임 오브젝트 위치 이동 시키기 (0) | 2023.03.18 |
연산자란? 연산자 종류 - 단항 연산자, 이항 연산자, 삼항 연산자 (0) | 2023.03.16 |
Unity 코루틴 - Coroutine (0) | 2023.03.10 |