7. Caída libre - nelsonmoreno/Box2d GitHub Wiki
En la caída libre un cuerpo cae desde una altura H de forma vertical, sin considerar el rozamiento con el aire. Es un tipo de movimiento rectilíneo uniformemente acelerado (m.r.u.a.) cuya aceleración coincide con el valor de la gravedad. En nuestra simulación, la aceleración de la gravedad es constante y dirigida hacia abajo (ya hemos dicho que en Box2d podemos redefinir el sentido de la gravedad), en este caso hemos definido previamente que su valor es de 10m/s2.
var bodyDef = new b2BodyDef;
//create ground
bodyDef.type = b2Body.b2_staticBody;
// positions the center of the object (not upper left!)
bodyDef.position.x = canvas.width / 2 / SCALE;
bodyDef.position.y = (canvas.height / SCALE) - 1;
fixDef.shape = new b2PolygonShape;
// half width, half height. eg actual height here is 1 unit
fixDef.shape.SetAsBox((canvas.width / SCALE) / 2, 0.5 / 2);
world.CreateBody(bodyDef).CreateFixture(fixDef);
// create dynamic polygon object
bodyDef.type = b2Body.b2_dynamicBody;
fixDef.shape = new b2PolygonShape;
fixDef.shape.SetAsBox(
0.4//half width
, 0.4 //half height
);
bodyDef.position.x = canvas.width / 2/ SCALE;
bodyDef.position.y = 0.5;
var boxBody = world.CreateBody(bodyDef);
boxBody.CreateFixture(fixDef);
En las siguientes dos URL puedes encontrar la demostración y el código fuente completo:
Demostración: http://box2d-1302.appspot.com/static/caidalibre
Código fuente: https://github.com/nelsonmoreno/box2d/blob/master/web/static/caidalibre/index.html