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 -
unload()
-
Box2d를 해제하여 사용하지 않는다