This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Defold에는 2D 물리 시뮬레이션을 위한 Box2D 물리 엔진의 수정 버전(2.2.1)과 3D 물리를 위한 Bullet 물리 엔진(2.77)이 포함되어 있습니다. 이를 통해 서로 다른 종류의 충돌 오브젝트 사이에서 뉴턴 물리 상호작용을 시뮬레이션할 수 있습니다. 이 매뉴얼에서는 그 동작 방식을 설명합니다.
Defold에서 사용하는 물리 엔진의 주요 개념은 다음과 같습니다:
충돌 오브젝트 자체 외에도 두 충돌 오브젝트를 연결하고, 움직임을 제한하거나 힘을 적용하는 방식으로 물리 시뮬레이션에서의 동작에 영향을 주는 충돌 오브젝트 제약 조건을 정의할 수 있습니다. 이는 보통 조인트라고 부릅니다. 조인트에 대해 더 알아보세요.
또한 레이 캐스트라고 하는 선형 광선을 따라 물리 월드를 검사하고 읽을 수 있습니다. 레이 캐스트에 대해 더 알아보세요.
물리 엔진은 뉴턴 물리를 시뮬레이션하며 미터, 킬로그램, 초(MKS) 단위에서 잘 동작하도록 설계되어 있습니다. 또한 물리 엔진은 움직이는 오브젝트가 0.1미터에서 10미터 사이의 크기일 때 잘 동작하도록 조정되어 있으며(정적 오브젝트는 더 클 수 있습니다), 기본적으로 엔진은 1단위(픽셀)를 1미터로 취급합니다. 픽셀과 미터 사이의 이러한 변환은 시뮬레이션 수준에서는 편리하지만, 게임 제작 관점에서는 그다지 유용하지 않습니다. 기본 설정에서는 크기가 200픽셀인 충돌 모양이 200미터 크기로 취급되며, 이는 적어도 움직이는 오브젝트에는 권장 범위를 크게 벗어납니다.
일반적으로 게임에서 흔히 사용하는 오브젝트 크기와 잘 맞도록 물리 시뮬레이션을 스케일링해야 합니다. 물리 시뮬레이션의 스케일은 game.project의 물리 스케일 설정에서 변경할 수 있습니다. 예를 들어 이 값을 0.02로 설정하면 200픽셀이 4미터로 취급됩니다. 스케일 변경에 맞추려면 중력(game.project에서도 변경 가능)도 함께 증가시켜야 한다는 점에 유의하세요.
안정적인 시뮬레이션을 위해 물리 엔진은 일정한 간격으로 업데이트하는 것이 좋습니다(프레임 속도에 따라 불규칙해질 수 있는 간격으로 업데이트하는 것과 반대입니다). game.project 파일의 Physics 섹션에서 Use Fixed Timestep 설정을 체크하면 물리에 고정 업데이트를 사용할 수 있습니다. 업데이트 빈도는 game.project 파일의 Engine 섹션에 있는 Fixed Update Frequency 설정으로 제어합니다. 물리에 고정 타임스텝을 사용할 때는 게임의 충돌 오브젝트와 상호작용하기 위해, 예를 들어 힘을 적용할 때, fixed_update(self, dt) 라이프사이클 함수를 사용하는 것도 권장됩니다.