2014-02-16 32 views
1

我想用鼠标使用mousejoint捕捉对象。由于我是个傻瓜,我偷了代码。但它不工作或我。mouseJoint box2dweb不工作

我收到此错误:

Uncaught TypeError: Object #< ba > has no method 'IsActive' Box2dWeb-2.1.a.3.min.js:236 Uncaught TypeError: Object #< ba > has no method 'SetAwake' Box2dWeb-2.1.a.3.min.js:223

这里是代码:

var def = new b2MouseJointDef(); 

      def.bodyA = ground; 
      def.bodyB = body; 
      def.target = p; 

      def.collideConnected = true; 
      def.maxForce = 1000 * body.GetMass(); 
      def.dampingRatio = 0; 

      mouse_joint = world.CreateJoint(def); 

      body.SetAwake(true); 

这是身体

function createBox(world, x, y, width, height, options) { 
options = $.extend(true, { 
    'density' : 1.0 , 
    'friction' : 1.0 , 
    'restitution' : 0.5 , 

    'linearDamping' : 0.0 , 
    'angularDamping' : 0.0 , 

    'type' : b2Body.b2_dynamicBody 
}, options); 

var body_def = new b2BodyDef(); 
var fix_def = new b2FixtureDef(); 

fix_def.density = options.density; 
fix_def.friction = options.friction; 
fix_def.restitution = options.restitution; 

fix_def.shape = new b2PolygonShape(); 

fix_def.shape.SetAsBox(width , height); 

body_def.position.Set(x , y); 

body_def.linearDamping = options.linearDamping; 
body_def.angularDamping = options.angularDamping; 

body_def.type = options.type; 
body_def.userData = options.user_data; 

var b = world.CreateBody(body_def); 
var f = b.CreateFixture(fix_def); 

return b; 

}

也许有人可以帮?

福尔克

回答

0

我可以回答一半的问题:

如果我成立了地上

ground = createBox(world, 4, 1, 4 , 0.5, {type : b2Body.b2_staticBody}); 

与不是此函数: VAR bodyDef =新b2BodyDef();

var fixDef = new b2FixtureDef(); 
fixDef.density = 1.0; 
fixDef.friction = 1.0; 
fixDef.restitution = 0.5; 

fixDef.shape = new b2PolygonShape; 

//mention half the sizes 
fixDef.shape.SetAsBox(4.00 , .5); 

//set the position of the center 
bodyDef.position.Set(4.10 , 1); 

return world.CreateBody(bodyDef).CreateFixture(fixDef); 

然后它工作。但为什么?