我正在尝试使用mousejoint捕获鼠标对象。因为我是个傻瓜,我偷了代码。但它不起作用或我。
我收到了这个错误:
未捕获的TypeError:对象#< ba>没有方法'IsActive'Box2dWeb-2.1.a.3.min.js:236 未捕获的TypeError:对象#< ba>没有方法'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 :(得分:0)
我可以回答问题的一半:
如果我用
设置地面ground = createBox(world, 4, 1, 4 , 0.5, {type : b2Body.b2_staticBody});
而不是这个功能: var bodyDef = new 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);
然后它正在运作。但为什么呢?