3D 물리에 전역 설정을 적용하려면 Physics 설정(메인 메뉴: Edit > Project Settings에서 Physics 카테고리 선택)을 사용하십시오.
참고: 2D 물리에 전역 설정을 적용하려면 Physics 2D 설정을 사용하십시오.
물리 설정은 3D 물리 시뮬레이션의 정확도에 대한 제한을 정의합니다. 대부분의 경우 더 정확한 시뮬레이션을 구현하려면 더 많은 처리 오버헤드가 필요하므로 이러한 설정은 정확도와 성능의 균형을 맞출 수 있는 방법입니다.
Physics 패널에는 프로젝트에서 사용할 물리 SDK를 정의하는 설정이 포함되어 있습니다.
| 설정 | 설명 |
|---|---|
| GameObject SDK | 프로젝트의 게임 오브젝트에 대한 물리 시뮬레이션을 관리하는 데 사용할 SDK를 정의합니다. 기본 설정은 PhysX입니다. 프로젝트의 게임 오브젝트에 대한 물리 시뮬레이션을 비활성화하려면 None으로 설정합니다. |
Physics 설정에는 Settings라는 패널도 포함되어 있습니다.
Settings 패널에는 모든 물리 SDK에 대한 설정이 포함되어 있습니다. 다음 탭을 사용할 수 있습니다.
Shared 탭에는 모든 물리 SDK에 적용되는 전역 설정이 있습니다.
| 프로퍼티 | 기능 |
|---|---|
| Gravity | x, y, z축을 사용하여 모든 Rigidbody 컴포넌트에 적용되는 중력 양을 설정합니다. 현실적인 중력 설정을 위해 y축에 음수 값을 적용합니다. 중력은 제곱초당 월드 단위로 정의됩니다. 참고: 중력을 늘리면 안정적인 접촉을 유지하기 위해 Default Solver Iterations 값도 늘려야 할 수 있습니다. |
| Layer Collision Matrix | 레이어 기반 충돌 검사 시스템의 동작 방식을 정의합니다. 충돌 매트릭스에서 다른 레이어와 상호 작용할 레이어를 선택하려면 해당 레이어의 체크박스를 선택합니다. |
GameObject 탭에는 프로젝트의 모든 게임 오브젝트에 적용되는 전역 물리 설정이 있습니다.
| 프로퍼티 | 기능 | |
|---|---|---|
| Default Material | 개별 콜라이더에 레퍼런스가 할당되지 않은 경우 기본 물리 머티리얼에 대한 레퍼런스를 설정합니다. | |
| Bounce Threshold | 속도 값을 설정합니다. 충돌하는 두 오브젝트의 상대 속도가 이 값보다 낮으면 서로 튕겨나가지 않습니다. 이 값은 지터도 줄이므로 값을 너무 낮게 설정하지 않는 것이 좋습니다. | |
| Default Max Depenetration Velocity | 최대 관통 해제 속도(솔버가 다른 바디와 겹치지 않도록 잡아당기는 동안 바디에 설정할 수 있는 속도)에 대한 기본값을 정의합니다. | |
| Sleep Threshold | 비키네마틱 리지드바디(즉 물리 시스템에 의해 제어되지 않는 리지드바디)가 휴면할 수 있는 전역 에너지 임곗값을 설정합니다. 리지드바디가 휴면 상태인 경우 프레임마다 업데이트되지 않으므로 리소스를 더 적게 소모합니다. 리지드바디의 키네틱 에너지를 질량으로 나눈 값이 이 임곗값 미만인 경우, 리지드바디는 휴면 상태입니다. | |
| Default Contact Offset | 충돌 검사 시스템이 충돌 접촉을 생성하는 데 사용하는 거리를 설정합니다. 값은 양수여야 하며, 0에 너무 가깝게 설정하면 지터가 발생할 수 있습니다. 기본적으로 이 값은 0.01로 설정되어 있습니다. 콜라이더는 거리가 접촉 오프셋 값의 합보다 작은 경우에만 충돌 접촉을 생성합니다. | |
| Default Solver Iterations | Unity가 모든 물리 프레임에서 실행하는 솔버 프로세스의 수를 정의합니다. 솔버는 작은 물리 엔진 작업으로, 조인트의 움직임이나 중복되는 Rigidbody 컴포넌트 간의 접촉 관리 같은 여러 물리 상호 작용을 결정합니다. 이는 솔버 출력의 품질에 영향을 미치며, 기본값이 아닌 Time.fixedDeltaTime을 사용하거나 추가 설정을 요구하는 경우 프로퍼티를 변경하는 것이 좋습니다. 일반적으로 조인트 또는 접촉으로 인한 지터를 줄이기 위해 사용됩니다. |
|
| Default Solver Velocity Iterations | 각 물리 프레임에서 솔버가 수행하는 속도 프로세스 수를 설정합니다. 솔버가 수행하는 프로세스가 많을수록 리지드바디 바운스 후 그로 인해 튕겨나가는 속도의 정확도가 높아집니다. 충돌 후 조인트된 Rigidbody 컴포넌트나 래그돌(ragdoll)이 너무 많이 움직이는 문제가 발생하면 이 값을 늘리십시오. | |
| Queries Hit Backfaces |
Physics.Raycast 같은 물리 쿼리에서 메시 콜라이더의 후면 삼각형과의 충돌을 감지하도록 하려면 이 옵션을 활성화합니다. 이 설정은 기본적으로 비활성화되어 있습니다. |
|
| Queries Hit Triggers | 레이캐스트, SphereCast, SphereTest 등의 물리 타격 테스트에서 트리거로 표시된 콜라이더와 교차할 경우 타격이 반환되도록 하려면 이 옵션을 활성화합니다. 개별 레이캐스트는 이러한 동작을 오버라이드할 수 있습니다. 이 설정은 기본적으로 활성화되어 있습니다. | |
| Enable Adaptive Force | 이 옵션을 활성화하면 적응적 힘이 활성화됩니다. 적응적 힘은 동작의 사실성을 높이기 위해 오브젝트 더미나 스택을 통해 힘이 전달되는 방법에 영향을 미칩니다. 이 설정은 기본적으로 비활성화되어 있습니다. | |
| Contacts Generation | 컨택트 생성 메서드를 선택합니다. | |
| Legacy Contacts Generation | Unity 5.5 이전에는 SAT(분리 축 원칙)를 기반으로 한 접촉 생성 방법을 사용했습니다. PCM이 더 효율적이지만, 이전 프로젝트에서는 물리를 약간 다시 조정할 필요가 없도록 SAT를 계속 사용하는 것이 더 쉬울 수 있습니다. PCM은 약간 다른 바운스를 유발할 수 있으며, 접촉 버퍼(즉, OnCollisionEnter, OnCollisionStay, OnCollisionExit에 전달되는 충돌 인스턴스에서 얻은 배열)에 쓸모없는 접촉이 더 적게 남게 됩니다.업그레이드 팁: Unity 2018.2 이하로 제작된 프로젝트를 마이그레이션하려면 매니폴드에서 패치를 병합하고 접촉을 선택하는 코드로 작동하도록 스크립트를 업데이트해야 할 수 있습니다. |
|
| Persistent Contacts Manifold (PCM) | 물리 프레임마다 더 적은 접촉 수를 생성하고 여러 프레임에서 더 많은 접촉 데이터를 공유합니다. 또한 PCM 접촉 생성 경로는 더 정확하며 대부분의 경우 더 나은 충돌 피드백을 생성합니다. 자세한 내용은 영구 접촉 매니폴드에 대한 Nvidia 기술 자료를 참조하십시오. 이는 기본값입니다. |
|
| Simulation Mode | Unity가 물리 시뮬레이션을 실행할 시점을 선택합니다. 기본값은 Fixed Update입니다. | |
| Fixed Update |
MonoBehaviour.FixedUpdate 직후 물리 시뮬레이션을 실행합니다. |
|
| Update |
MonoBehaviour.Update 직후 물리 시뮬레이션을 실행합니다. |
|
| Script | 스크립트가 Physics.Simulate를 호출할 때 물리 시뮬레이션을 실행합니다. |
|
| Auto Sync Transforms | Transform 컴포넌트가 변경될 때마다 트랜스폼 변경 사항을 물리 시스템과 자동으로 동기화하려면 이 옵션을 활성화합니다. 이 설정은 기본적으로 비활성화되어 있습니다. | |
| Reuse Collision Callbacks | 충돌 콜백을 재사용하려면 활성화합니다. 물리 시스템은 충돌 유형 인스턴스 하나만 생성하고 각 개별 콜백에 다시 사용합니다. 이렇게 하면 가비지 컬렉터가 처리하는 낭비를 줄이고 성능이 향상됩니다. 이 프로퍼티는 기본적으로 활성화되어 있습니다. | |
| Invoke Collision Callbacks |
OnCollisionEnter, OnCollisionStay, OnCollisionExit에 대한 MonoBehaviour 충돌 메시지를 OnCollision 메서드를 구현하는 해당 스크립트로 전송합니다. 이 프로퍼티는 기본적으로 활성화되어 있습니다. |
|
| Contact Pairs Mode | 사용할 컨택트 페어 생성 유형을 선택합니다. | |
| Default Contact Pairs | 키네마틱-키네마틱 페어와 키네마틱-정적 페어를 제외하고 모든 컨택트 페어에서 충돌 및 트리거 이벤트를 수신합니다. | |
| Enable Kinematic Kinematic Pairs | 키네마틱-키네마틱 컨택트 페어에서 충돌 및 트리거 이벤트를 수신합니다. | |
| Enable Kinematic Static Pairs | 키네마틱-정적 컨택트 페어에서 충돌 및 트리거 이벤트를 수신합니다. | |
| Enable All Contact Pairs | 모든 컨택트 페어에서 충돌 및 트리거 이벤트를 수신합니다. | |
| Broadphase Type | 물리 시뮬레이션에 사용할 광역 수준 알고리즘을 선택합니다. PhysX SDK 및 리지드바디 충돌에 대한 NVIDIA 기술 자료를 참조하십시오. | |
| Sweep and Prune Broadphase | 스위핑 및 프루닝(sweep-and-prune) 넓은 페이즈 충돌 메서드(멀리 떨어진 페어를 확인할 필요가 없도록 하나의 축을 따라 오브젝트 정렬하기)를 사용합니다. | |
| Multibox Pruning Broadphase | 멀티박스 프루닝은 그리드를 사용하며, 각 그리드 셀은 스위핑 및 프루닝을 수행합니다. 이는 일반적으로 플랫 월드에 게임 오브젝트가 많을 때 성능을 개선하는 데 도움이 됩니다. | |
| Automatic Box Pruning | 이 알고리즘은 월드 경계와 분할 횟수를 자동으로 계산할 수 있다는 점을 제외하고 멀티박스 프루닝과 유사합니다. 그리드 셀 세트를 유지하고 일반적인 스위핑 및 프루닝 방식을 사용하여 콜라이더 페어가 겹칠 가능성을 파악합니다. 일반적으로 스위핑 및 프루닝 한 번으로 많은 오탐이 발생하는 대규모 씬에 유용합니다. | |
| World Bounds |
Multibox Pruning Broadphase 알고리즘을 사용할 때 멀리 떨어진 오브젝트가 서로 영향을 주지 않도록 월드를 둘러싸는 2D 그리드를 정의합니다. 이 옵션은 Broadphase Type을 Multibox Pruning Broadphase로 설정한 경우에만 사용됩니다. |
|
| World Subdivisions | 2D 그리드 알고리즘에서 x축과 z축에 있는 셀의 수입니다. 이 옵션은 Broadphase Type을 Multibox Pruning Broadphase로 설정한 경우에만 사용됩니다. |
|
| Friction Type | 시뮬레이션에 사용할 마찰 알고리즘을 선택합니다. | |
| Patch Friction Type | 일반적으로 적은 솔버 반복 횟수에서 가장 안정적인 결과를 얻는 강력한 기본 마찰 알고리즘입니다. 이 메서드는 터치하는 오브젝트 쌍당 최대 4개의 스칼라 솔버 제약만 사용합니다. | |
| One Directional Friction Type | 쿨롱 마찰 모델을 간소화한 물리로, 접촉 지점의 마찰이 컨택트 노멀의 번갈아 나타나는 탄젠트 방향에 적용됩니다. 패치 마찰보다 더 많은 솔버 반복 횟수가 필요하지만, 양방향 모델만큼 정확하지는 않습니다. 이 마찰 유형으로 작동하는 관절 바디의 경우, Solver Type을 Temporal Gauss Seidel로 설정합니다. | |
| Two Directional Friction Type | 단방향 모델과 유사하지만 마찰을 양쪽 탄젠트 방향으로 동시에 적용합니다. 더 많은 솔버 반복 횟수가 필요하지만 더 정확합니다. 접점이 많은 시나리오에서는 모든 접점에 적용되므로 패치 마찰보다 리소스를 더 많이 소모합니다. 이 마찰 유형으로 작동하는 관절 바디의 경우, Solver Type을 Temporal Gauss Seidel로 설정합니다. | |
| Enable Enhanced Determinism | 게임이 실행자를 결정론적 순서로 삽입하는 경우 실행자의 존재 유무와 상관없이 씬의 시뮬레이션이 일관적으로 이루어집니다. 이 모드에서는 이와 같은 추가적인 결정론적 분명성을 확보하기 위해 성능이 일부 저하됩니다. | |
| Enable Unified Heightmaps | 터레인 충돌을 메시 충돌과 같은 방식으로 처리하려면 이 옵션을 활성화합니다. | |
| Improved Patch Friction | 정적 마찰과 동적 마찰이 분석 결과를 초과하지 않도록 패치 마찰을 최적화합니다. 이 프로퍼티는 기본적으로 비활성화되어 있습니다. | |
| Solver Type | 시뮬레이션에 사용할 PhysX 솔버 유형을 선택합니다. | |
| Projected Gauss Seidel | 기본 PhysX 솔버입니다. | |
| Temporal Gauss Seidel | 이 솔버는 더 뛰어난 컨버전스와 높은 질량 비율을 더 잘 처리하고, 관통을 수정할 때 발생하는 에너지를 최소화하며, 과도한 늘림에 대한 조인트 저항을 개선합니다. 일반적으로 기본 솔버를 사용하여 시뮬레이션을 수행하는 동안 비정상적인 동작이 발생할 때 도움이 됩니다. | |
| Default Max Angular Speed | 모든 동적 리지드바디 게임 오브젝트의 프로젝트 전체 기본 최대 각속력을 라디안 단위로 설정합니다. 기본값은 50입니다. |
|
| Scratch Buffer Chunk Count | 임시 할당을 위해 물리 시스템에 할당할 16KB 메모리 청크 수입니다. 기본값은 4로, 64KB 버퍼를 제공합니다. | |
| Fast Motion Threshold | 스위핑 기반 CCD 알고리즘이 빠르게 움직이는 바디가 이 프레임을 움직였는지 여부를 판단하는 데 사용하는 리니어 모션 임곗값입니다. 0보다 커야 합니다. 기본값은 무한대이며 3.402823e+38 값으로 표시됩니다. |
|
Cloth 탭의 설정은 천 물리에만 적용됩니다.
| 프로퍼티 | 기능 |
|---|---|
| Cloth Gravity | Cloth 컴포넌트에 대한 각 축의 중력 값을 설정합니다. 기본적으로 X는 0으로, Y는 -9.81로, Z는 0으로 설정되어 있습니다. |
| Enable Cloth Inter-Collision | 천 파티클이 서로 충돌하는 기능을 활성화합니다. 자세한 내용은 천: 자체 충돌 및 상호 충돌을 참조하십시오. |
| Distance | 서로 충돌하는 각 천 파티클 주위에 있는 구체의 지름을 월드 공간 단위로 정의합니다. Unity는 이러한 구체가 시뮬레이션 중에 겹치지 않도록 합니다. 이 값은 설정의 두 파티클 간 가장 가까운 거리보다 작아야 합니다. 거리 값이 크면 천 충돌이 거리 제약을 위반하여 지터가 발생할 수 있습니다. 이 값은 기본적으로 0.1로 설정되어 있습니다. |
| Stiffness | 충돌하는 천 파티클이 Distance 값보다 가까이 있을 때 서로 분리하는 힘의 강도를 정의합니다. 이 값은 PhysX가 분리 힘에 곱하는 계수이며, 천 솔버는 제공한 값을 기반으로 강도를 계산합니다. 이 값은 기본적으로 0.2로 설정되어 있습니다. |
PhysicsManager