El cuerpo de Box2D no gira en colisión

He intentado entrar en Box2DWeb, que es un puerto JS del puerto AS de Box2D. Solo trato de poner en marcha una configuration simple donde hay una rampa estática y una caja dinámica que cae sobre ella. Aquí está mi código:

var b2World = Box2D.Dynamics.b2World; var b2DebugDraw = Box2D.Dynamics.b2DebugDraw; var b2Vec2 = Box2D.Common.Math.b2Vec2; var b2BodyDef = Box2D.Dynamics.b2BodyDef; var b2Body = Box2D.Dynamics.b2Body; var b2FixtureDef = Box2D.Dynamics.b2FixtureDef; var b2PolygonShape = Box2D.Collision.Shapes.b2PolygonShape; var b2CircleShape = Box2D.Collision.Shapes.b2CircleShape; var width = 8; var height = 4; var world = new b2World(new b2Vec2(0, 10), true); var debugDraw = new b2DebugDraw(); debugDraw.SetSprite(document.getElementById("canvas").getContext("2d")); debugDraw.SetDrawScale(100); //Arena is 8 meters by 4 meters debugDraw.SetFillAlpha(0.5); debugDraw.SetLineThickness(1); debugDraw.SetFlags(b2DebugDraw.e_shapeBit); world.SetDebugDraw(debugDraw); var bodyDef = new b2BodyDef(); bodyDef.type = b2Body.b2_staticBody; bodyDef.position.Set(3.5, 3) var body = world.CreateBody(bodyDef); body.SetAngle(Math.PI / 4); var shape = new b2PolygonShape(); shape.SetAsBox(1, 0.25); var fixtureDef = new b2FixtureDef(); fixtureDef.shape = shape; fixtureDef.density = 1; fixtureDef.friction = 0.3; body.CreateFixture(fixtureDef); var bodyDef = new b2BodyDef(); bodyDef.type = b2Body.b2_dynamicBody; bodyDef.position.Set(3.5, 1) var body = world.CreateBody(bodyDef); var shape = new b2PolygonShape(); shape.SetAsBox(0.10, 0.10); var fixtureDef = new b2FixtureDef(); fixtureDef.shape = shape; body.CreateFixture(fixtureDef); setInterval(function() { world.Step(1 / 60, 10, 10); world.DrawDebugData(); world.ClearForces(); console.log(body.GetAngle()); }, 1000 / 60); 

Puedes ver el resultado en vivo en jsFiddle . Como puede ver, la caja no gira cuando llega a la rampa. ¿Qué estoy haciendo mal?

Gracias.

Algunos resources:

  • Manual AS3: http://www.box2dflash.org/docs/2.0.2/manual
  • Referencia AS3: http://www.box2dflash.org/docs/2.0.2/reference/

Agregue fricción y densidad a la caja. … y no abandone el canal irc inmediatamente, a veces lleva más de 3 minutos.

Ah, tienes que establecer la fricción y la densidad en el accesorio del object que cae, no en el cuerpo.

 var fixtureDef = new b2FixtureDef(); fixtureDef.shape = shape; fixtureDef.friction = 0.3 fixtureDef.density = 1 body.CreateFixture(fixtureDef); 

Por cierto, gracias por apuntarme en dirección a Box2D – No había visto ese motor de física antes, parece interesante 🙂