프로그래밍/Cocos2d-x

물리엔진 Box2D

standwally 2013. 12. 6. 10:53

Tiny Wings, 앵그리 버드 등이 물리엔진을 적용한 대표적인 2D  게임이다.

새가 가속도에 따라 날아가는 높이와 거리가 다르게 표현되고, 그리고 점점 지면으로 떨어지는 중력의 표현,

또한 새가 물체와 부딪치고, 물체가 넘어지고하는 이 모든 것이 물리엔진과 관계가 깊다.

 

Cocos2d-x에 라이브러리에 내장된 대표적인 물리엔진에는 2가지가 있으며 따로 설치할 필요가 없고 프로젝트 생성시에 사용하겠다는 체크만 해주면 된다.

  1. Box2D
  2. Chipmunk

 

이중에서 Box2D는 C++언어 기반의 오픈소스이며, 앵그리 버드의 기반이 된 엔진이기도 하다.

 

Box2D의 기본 개념

  1. World
    1. 물리 객체들이 포함되고, 물리적인 현상들이 발생하는 공간
    2. 기본적으로 최소 하나의 월드를 생성하고 유지한다. 여러개의 월드를 생성할 수 는 있으나 권장하지도 않고, 비정상적인 공간이 됨.
    3. 월드에는 중력이 존재함.

  2. Shape
    1. 원, 다각형과 같은 이차원 객체

  3. Body
    1. 외력을 가해도 형태가 변형되거나 부서지지 않는 강체.

  4. Fixture
    1. 밀도, 마찰력, 반발력과 같은 요소들과 함께 Body에 Shape을 연결하여 만들어진 형체

  5. 그 외 Joint, Joint Motor 등이 있음.

 

그리고 Box2D는 픽셀 단위를 사용하지 않고 미터, 킬로미터, 초 등과 같은 실제 현실의 단위를 사용한다.