import com.actionsnippet.qbox.*;
var sim:QuickBox2D = new QuickBox2D(this, {debug:true});
// use the box2D default renderer (debug : true)
sim.createStageWalls();
// anchor
var pre:QuickObject = sim.addCircle({x:9, y:3, radius:.5, density:0});
// create a chain of boxes
for (var i:int = 0; i<12; i++){
var curr:QuickObject = sim.addBox({x:10 + i, y:3, width:.9, height:.9, angularDamping:1});
// currently always adds a b2DistanceJoint
sim.addJoint({a:pre.body, b:curr.body,
x1:9 + i, y1: 3, x2: 10 + i, y2:3, collideConnected:false});
pre = curr;
}
// add a circle, use CCD (isBullet)
sim.addCircle({x:20, y:10, radius:1, isBullet:true});
// start simulation
sim.start();
sim.mouseDrag();
This snippet uses my QuickBox2D library to create a chain. QuickBox2D is a wrapper for Box2DFlashAS3 that greatly simplifies world setup, instantiation and graphical skinning of rigid bodies (more info on yesterdays post)…
See the swf here .
Download Box2DFlashAS3 here
Download QuickBox2D Alpha 104 here
See yesterdays post for additional information. I’m still in the process of writing some docs and possibly a tutorial for QuickBox2D… hopefully I’ll finish with that soon…
If your somewhat familiar with Box2D and just want to just dig right in, the following scrap of information may help:
// Methods of the QuickBox2D class, used for creating rigid bodies and joints
addCircle();
addBox();
addPoly();
// currently only creates b2DistanceJoints
addJoint();
these function all take one parameter Object as their argument. The common parameter properties for rigid bodies are:
// QuickBox2D simpleRender settings:
lineColor:0x000000
lineAlpha:1
lineThickness:0
fillColor:0xCCCCCC
fillAlpha:1
// wrapped Box2D properties
x:3
y:3
density:1
friction:0.5
restitution:0.2
angle: 0
linearDamping:0
angularDamping:0
isBullet:false,
fixedRotation:false
allowSleep: true
isSleeping:false
// advanced use
maskBits:0xFFFF
categoryBits:1
groupIndex:0
//and the specific param properties are:
addCircle() : radius
addBox() : width, height
addPoly() : verts
//Joints have the following properties... not going to bother explaining these until I write the docs:
addJoint() : a, b, x1, x2, y1, y2
when I run the sample code, it displays the boxes, but there is no simulation,
actually, figured it out. By mistake, I managed to set the framerate as 0.01 🙂 setting it to 30 fixed the problem.
QuickBox2D is a nice library. I liked your coding style.