정적 콜라이더를 이동 또는 회전하거나 크기를 조정할 때마다 Unity는 씬의 모든 정적 콜라이더의 볼륨을 계산하고 이 정보를 캐시에 저장한다. 한마디로 성능 저하가 일어나게 된다. 물체를 동적 콜라이더로 설정하면 캐시에 다시 저장하지 않기 때문에 물리 효과를 최적화할 수 있다.
유니티는 콜라이더와 리지드바디 컴포넌트가 포함된 모든 게임 오브젝트는 동적인 것으로 간주한다. 콜라이더는 있지만 리지드바디 컴포넌트가 없으면 정적인 것으로 간주 함
콜라이더만 있는 경우(정적 오브젝트)
위에 그림에서 박스콜라이더는 있지만 리지드바디는 없다. 따라서 유니티는 이 정적인 콜라이더 캐시를 매 프레임마다 다시 계산하게 된다다. 해결책은 아래와 같이 리지드바디를 추가하는 것이다.
콜라이더와 리지드바디가 있는 경우(동적 오브젝트)
리지드바디 추가로 정적 콜라이더에서 동적 콜라이더 변경되었다. 추가로 물체가 아래로 떨어지는 걸
방지하려면 리지드바디의 Use Gravity를 해제하면 원하는 결과를 얻을 수 있지만 이것은 부분적인 해결 방법이다. 이러면 물체가 중력에 반응하지 않더라도 물리력에는 계속 반응한다.
키네마틱 리지드바디
더 나은 해결책은 Is Kinematic를 체크하는 것이다. 이렇게 체크하면 리지드바디 컴포넌트가 키네마틱 리지드바디로 설정된다. 키네마틱 리지드바디는 물리력에 반응하지 않으며, 트랜스폼을 이용해 움직일 수 있다.
'게임 엔진 > 유니티 엔진' 카테고리의 다른 글
macOS unitypackage까지 압축 풀리는 문제 (0) | 2019.11.26 |
---|---|
유니티 ARM64로 빌드하기 (0) | 2019.09.18 |
Apply Root Motion (0) | 2019.09.15 |
글로벌 일루미네이션 (0) | 2019.09.15 |
Multiple Sprite (0) | 2019.09.12 |