Class: Box2d

collie. Box2d

new collie.Box2d(nWidth, nHeight, nGravity)

Box2d를 쉽게 사용할 수 있는 클래스 Box2d-web 라이브러리가 필요하며 라이브러리는 http://code.google.com/p/box2dweb/ 에서 다운로드 받을 수 있습니다.

Name Type Default Description
nWidth Number

스테이지 너비(px)

nHeight Number

스테이지 높이(px)

nGravity Number 10 optional

중력

Version:
  • 0.0.1
See:
Example

var layer = new collie.Layer({ width: 300, height: 300 });

var box2d = new collie.Box2d(layer.option("width"), layer.option("height"), 10); box2d.addFixture("normal", { density: 1.0, friction: 0.5, restitution: 0.2 });

box2d.createWall("right"); box2d.createWall("left"); box2d.createWall("top"); box2d.createWall("bottom", "ground");

var box = new DisplayObject({ x: "center", y: "center", width: 100, height: 100, backgroundColor: "red" }).addTo(layer);

box2d.createObject(box, { type: "dynamic" }, "normal");

collie.Renderer.addLayer(layer); collie.Renderer.load(document.getElementById("contianer")); collie.Renderer.start();

Requires

  • module:collie.addon.js
  • module:box2d-web-2.1.a.3.js

Members

staticcollie.Box2d.BODY_TYPE

Properties:
Name Type Description
Body Object

type

staticcollie.Box2d.SCALE

Properties:
Name Type Description
pixel을 Number

meter로 바꿈;

Methods

staticcollie.Box2d.hasUserData(oBody){Boolean}

UserData 설정돼 있는지 여부를 반환

Name Type Description
oBody Box2D.Dynamics.b2Body

대상 Body

Returns:
있으면 true를 반환

staticcollie.Box2d.vec2(x, y, bIsPixel){Box2D.Common.Math.b2Vec2}

b2Vec2를 생성해서 반환, 주로 속도에서 쓰임

Name Type Description
x Number
y Number
bIsPixel Boolean

_update(oBody)

객체의 상태를 업데이트

Name Type Description
oBody Box2D.Dynamics.b2Body

addFixture(sName, htOption, oShape)

Fixture를 추가한다

Name Type Description
sName String

Fixture 이름

htOption Option

Fixture 옵션

Name Type Description
friction Number

마찰력 0~1, 0이면 마찰력이 없다

restitution Number

반발력 0~1, 0이면 비탄성충돌, 튀기지 않는다

oShape Box2D.Collision.Shapes.b2PolygonShape | Box2D.Collision.Shapes.b2CircleShape optional

shape도 지정할 경우 입력

createBody(htOption){Box2D.Dynamics.b2BodyDef}

b2BodyDef를 생성

Name Type Description
htOption Object
Name Type Default Description
type String "dynamic" optional

body 타입 static, dynamic, kinematic

createContact(fBeginContact, fEndContact, fPostSolve, fPreSolve)

Contact를 만든다

Name Type Description
fBeginContact Function optional
fEndContact Function optional
fPostSolve Function optional
fPreSolve Function optional

createDistanceJoint(oBody1, oBody2, oAnchor1, oAnchor2, htOption){Box2D.Dynamics.Joints.b2Joint}

DistanceJoint를 만든다

Name Type Description
oBody1 Box2D.Dynamics.b2Body

연결할 왼쪽 body

oBody2 Box2D.Dynamics.b2Body

연결할 오른쪽 body

oAnchor1 Box2D.Common.Math.b2Vec2

왼쪽 연결점

oAnchor2 Box2D.Common.Math.b2Vec2

오른쪽 연결점

htOption Object

Joint 옵션

Returns:
Joint

createFixture(htOption){Box2D.Dynamics.b2FixtureDef}

b2FixtureDef를 생성

Name Type Description
htOption Object

createFrictionJoint(oBody1, oBody2, oAnchor, htOption){Box2D.Dynamics.Joints.b2Joint}

FrictionJoint를 만든다

Name Type Description
oBody1 Box2D.Dynamics.b2Body

연결할 왼쪽 body

oBody2 Box2D.Dynamics.b2Body

연결할 오른쪽 body

oAnchor Box2D.Common.Math.b2Vec2

연결점

htOption Object

Joint 옵션

Returns:
Joint

createGearJoint(oJoint1, oJoint2, nRatio){Box2D.Dynamics.Joints.b2Joint}

GearJoint를 만든다

Name Type Description
oJoint1 Box2D.Dynamics.Joints.b2Joint

연결할 joint1

oJoint2 Box2D.Dynamics.Joints.b2Joint

연결할 joint2

nRatio Number

기어 비율

Returns:
Joint

createLineJoint(oBody1, oBody2, oAnchor, oAxis, htOption){Box2D.Dynamics.Joints.b2Joint}

LineJoint를 만든다

Name Type Description
oBody1 Box2D.Dynamics.b2Body

연결할 왼쪽 body

oBody2 Box2D.Dynamics.b2Body

연결할 오른쪽 body

oAnchor Box2D.Common.Math.b2Vec2

연결점

oAxis Box2D.Common.Math.b2Vec2

htOption Object

Joint 옵션

Returns:
Joint

createMouseJoint(oBody, oTarget, htOption){Box2D.Dynamics.Joints.b2Joint}

MouseJoint를 만든다

Name Type Description
oBody Box2D.Dynamics.b2Body

연결할 대상 body

oTarget Box2D.Common.Math.b2Vec2

대상 좌표

htOption Object

Joint 옵션

Returns:
Joint

createObject(oDisplayObject, htOption, vFixture){Box2D.Dynamics.b2Body}

Box2d 객체를 생성한다

Name Type Description
oDisplayObject collie.DisplayObject
htOption Object

body options

Name Type Default Description
radius Number optional

반지름, 이 값이 설정되면 Shape는 해당 반지름을 가지는 원으로 생성됨

width Number optional

상자 너비(px) 이 값이 설정되면 Shape는 상자로 생성됨

height Number optional

상자 높이(px) 이 값이 설정되면 Shape는 상자로 생성됨

type String "dynamic" optional

Body 종류, static(고정), dynamic(움직임), kinematic(움직이지만 다른 body에 영향이 없음)

groupIndex Number optional

충돌 그룹을 지정할 수 있다. 양수와 음수를 쓸 수 있으며 같은 양수의 index끼리는 충돌하고, 같은 음수의 index끼리는 충돌하지 않는다

userData Number optional

UserData

vFixture String | Box2D.Dynamics.b2FixtureDef

addFixture로 추가한 이름이나 FixtureDef를 입력

createPrismaticJoint(oBody1, oBody2, oAnchor, oAxis, htOption){Box2D.Dynamics.Joints.b2Joint}

PrismaticJoint를 만든다

Name Type Description
oBody1 Box2D.Dynamics.b2Body

연결할 왼쪽 body

oBody2 Box2D.Dynamics.b2Body

연결할 오른쪽 body

oAnchor Box2D.Common.Math.b2Vec2

연결점

oAxis Box2D.Common.Math.b2Vec2

htOption Object

Joint 옵션

Returns:
Joint

createPulleyJoint(oBody1, oBody2, oGroundAnchor1, oGroundAnchor2, oAnchor1, oAnchor2, nRatio, htOption){Box2D.Dynamics.Joints.b2Joint}

PulleyJoint를 만든다

Name Type Description
oBody1 Box2D.Dynamics.b2Body

연결할 왼쪽 body

oBody2 Box2D.Dynamics.b2Body

연결할 오른쪽 body

oGroundAnchor1 Box2D.Common.Math.b2Vec2

첫번째 땅 연결점

oGroundAnchor2 Box2D.Common.Math.b2Vec2

두번째 땅 연결점

oAnchor1 Box2D.Common.Math.b2Vec2

왼쪽 연결점

oAnchor2 Box2D.Common.Math.b2Vec2

오른쪽 연결점

nRatio Number

The pulley ratio, used to simulate a block-and-tackle.

htOption Object

Joint 옵션

Returns:
Joint

createRevoluteJoint(oBody1, oBody2, oAnchor, htOption){Box2D.Dynamics.Joints.b2Joint}

RevoluteJoint를 만든다

Name Type Description
oBody1 Box2D.Dynamics.b2Body

연결할 왼쪽 body

oBody2 Box2D.Dynamics.b2Body

연결할 오른쪽 body

oAnchor Box2D.Common.Math.b2Vec2

연결점

htOption Object

Joint 옵션

Returns:
Joint

createStaticObject(htOption, vFixture){Box2D.Dynamics.b2Body}

DisplayObject와 관계 없는 Static Object를 생성

Name Type Description
htOption Object
Name Type Description
x Number

좌상단 x좌표

y Number

좌상단 y좌표

width Number
height Number
vFixture String | Box2D.Dynamics.b2FixtureDef optional

addFixture로 추가한 이름이나 FixtureDef를 입력

createWall(sDirection, vFixture){Box2D.Dynamics.b2Body}

벽을 만든다

Name Type Description
sDirection String

벽 방향, left, right, top, bottom

vFixture String | Box2D.Dynamics.b2FixtureDef optional

addFixture로 추가한 이름이나 FixtureDef를 입력

createWeldJoint(oBody1, oBody2, oAnchor, htOption){Box2D.Dynamics.Joints.b2Joint}

WeldJoint를 만든다

Name Type Description
oBody1 Box2D.Dynamics.b2Body

연결할 왼쪽 body

oBody2 Box2D.Dynamics.b2Body

연결할 오른쪽 body

oAnchor Box2D.Common.Math.b2Vec2

연결점

htOption Object

Joint 옵션

Returns:
Joint

createWorld(nGravity){Box2D.Dynamics.b2World}

b2World를 생성한다

Name Type Description
nGravity Number

중력

getBody(oDisplayObject){Box2D.Dynamics.b2Body}

displayObject로 body를 찾는다

Name Type Description
oDisplayObject collie.DisplayObject

getDisplayObjectByBody(oBody){collie.DisplayObject}

Body로 displayObject를 반환한다. index를 사용하지 않기 때문에 속도에 문제가 있을 수 있다.

Name Type Description
oBody Box2D.Dynamics.b2Body

getFixture(sName){Box2D.Dynamics.b2FixtureDef|Boolean}

등록된 Fixture를 반환

Name Type Description
sName String

Fixture 이름

getWorld(){Box2D.Dynamics.b2World}

생성된 World 객체를 반환한다

load(bIsDebug)

Box2d를 로드한다.

Name Type Description
bIsDebug Boolean

디버깅용 레이어를 표시할지 여부

removeFixture(sName)

등록된 Fixture를 지움

Name Type Description
sName String

Fixture 이름

removeJoint(oJoint)

등록된 Joint를 지운다

Name Type Description
oJoint Box2D.Dynamics.Joints.b2Joint

removeObject(oBody, bRemoveDisplayObject)

등록된 객체를 제거한다

Name Type Description
oBody Box2D.Dynamics.b2Body
bRemoveDisplayObject Boolean

DisplayObject까지 같이 제거한다

resize(nWidth, nHeight)

스테이지 크기가 바뀔 경우

Name Type Description
nWidth Number
nHeight Number

Box2d를 해제하여 사용하지 않는다

comments powered by Disqus