Unity 물리 2D 설정 가이드
이 문서는 Unity의 물리 2D 시스템을 이해하고 설정하는 데 필요한 정보를 제공합니다. 물리 2D 설정을 조정하여 프로젝트의 성능 및 정확도를 최적화할 수 있습니다.
1. 물리 2D 설정 개요
Unity의 물리 2D 설정은 물리 시뮬레이션의 정확도를 결정하며, 일반적으로 더 높은 정확도를 위해 더 많은 처리 성능이 요구됩니다.
2. 물리 2D 인스펙터 설정
물리 2D 인스펙터의 설정은 다음과 같은 여러 가지 속성을 포함합니다.
| 프로퍼티 | 기능 |
|---|---|
| Gravity | 모든 리지드바디 2D 게임 오브젝트에 적용되는 중력의 양을 설정합니다. 일반적으로 중력은 Y축의 음의 방향으로만 설정됩니다. |
| Default Material | 개별 콜라이더 2D에 레퍼런스가 할당되지 않은 경우, 물리 머티리얼 2D의 레퍼런스를 설정합니다. |
| Velocity Iterations | 속도 효과를 결정하기 위한 연산 반복 횟수를 설정합니다. |
| Position Iterations | 포지션 변화를 결정하기 위한 연산 반복 횟수를 설정합니다. |
| Velocity Threshold | 탄성 충돌의 임계값을 설정합니다. |
| Max Linear Correction | 제약 해결 시 사용되는 최대 리니어 포지션 보정 값을 설정합니다. |
| Max Angular Correction | 제약 해결 시 사용되는 최대 각도 보정 값을 설정합니다. |
| Max Translation Speed | 리지드바디 2D 게임 오브젝트의 최고 리니어 속도를 설정합니다. |
| Max Rotation Speed | 리지드바디 2D 게임 오브젝트의 최고 회전 속도를 설정합니다. |
| Baumgarte Scale | 충돌 중복을 해결하는 속도를 결정하는 스케일 요소를 설정합니다. |
주의할 점
Default Contact Offset값을 너무 낮추면 연속 폴리곤 충돌 계산에 문제가 발생할 수 있습니다. 반대로 값이 너무 크면 버텍스 충돌 아티팩트가 발생할 수 있습니다.
3. 메모리 및 성능 최적화
물리 2D의 성능을 최적화하기 위해 멀티스레딩 설정을 활용할 수 있습니다. 이를 통해 시뮬레이션 처리 속도를 높일 수 있습니다.
| 설정 | 설명 |
|---|---|
| Use Multithreading | 잡 시스템을 사용하여 시뮬레이션 단계를 실행하도록 설정합니다. |
| Use Consistency Sorting | 일관된 처리 순서를 유지하는 것이 중요한 경우 이 옵션을 활성화합니다. |
| Interpolation Poses Per Job | 각 시뮬레이션 작업에서 보간되는 최소 리지드바디 수를 설정합니다. |
4. Layer Collision Matrix
Layer Collision Matrix를 사용하면 서로 다른 리지드바디 2D가 접촉할 수 있는지를 제어할 수 있습니다. 이 설정을 통해 특정 레이어 간의 상호 작용을 최적화할 수 있습니다.
| 설정 | 기능 |
|---|---|
| Enable All | 모든 레이어 간의 접촉을 허용합니다. |
| Disable All | 모든 레이어 간의 접촉을 비활성화합니다. |
| 체크박스 | 두 레이어 간의 접촉이 허용되는지 여부를 표시합니다. |
5. 활용 및 응용 예제
예제 1: 간단한 중력 적용
void Start() {
Rigidbody2D rb = GetComponent<Rigidbody2D>();
rb.gravityScale = 1; // 기본 중력 적용
}
예제 2: 충돌 이벤트 처리
void OnCollisionEnter2D(Collision2D collision) {
if (collision.gameObject.CompareTag("Player")) {
Debug.Log("Player와 충돌했습니다!");
}
}
이 가이드를 통해 Unity에서 물리 2D의 다양한 설정과 활용법에 대해 기본적인 이해를 돕고자 하였습니다. 더 깊이 있는 이해를 위해 Unity의 공식 문서를 참고하시기 바랍니다.