[c++] Box2D 라이브러리 활용 방법

바디를 작성하고, 세계에 추가하고, 월드를 갱신하여 Box2D 라이브러리 활용하기


바디 생성

Box2D에서는 바디(Body)가 가장 기본적인 요소다. 바디는 물리 시뮬레이션에 참여하는 모든 물체를 의미한다. 바디를 만들기 위해서는 바디 정의(Body Definition)를 설정하고, 월드에 추가해야 한다.

b2BodyDef bodyDef;
bodyDef.type = b2_dynamicBody;
bodyDef.position.Set(0.0f, 10.0f);

b2Body* body = world->CreateBody(&bodyDef);

위 코드에서 b2BodyDef 객체를 사용하여 바디의 타입과 초기 위치를 정의하고, CreateBody 함수를 호출하여 월드에 바디를 추가한다.

모양 추가

바디에 모양(Shape)을 추가하여 실제 물리 객체의 형태를 결정한다. 주로 상자, 원, 다각형 등의 모양을 사용할 수 있다.

b2PolygonShape dynamicBox;
dynamicBox.SetAsBox(1.0f, 1.0f);

b2FixtureDef fixtureDef;
fixtureDef.shape = &dynamicBox;
fixtureDef.density = 1.0f;
fixtureDef.friction = 0.3f;

body->CreateFixture(&fixtureDef);

위 코드에서는 바디에 사각형 모양의 Fixture를 추가한다. b2PolygonShape 객체를 사용하여 사각형의 크기를 정의하고, b2FixtureDef 객체를 사용하여 밀도와 마찰을 설정한다.

월드 갱신

월드 객체의 Step 함수를 호출하여 물리 시뮬레이션을 갱신한다.

float timeStep = 1.0f / 60.0f;
int32 velocityIterations = 6;
int32 positionIterations = 2;

world->Step(timeStep, velocityIterations, positionIterations);

Step 함수는 시간 간격과 반복 횟수를 인자로 받아 물리 시뮬레이션을 진행한다.


Box2D 라이브러리를 활용하여 바디를 만들고 모양과 물리 속성을 추가한 후, 월드를 갱신하여 실시간으로 물리 시뮬레이션을 구현할 수 있다. 만들어진 바디와 모양을 이용하여 게임이나 시뮬레이션을 개발할 수 있다.

참고 문헌: Box2D 공식 문서