我正在尝试创建一个 MouseJoint 对象,但由于某种原因,在 b2World 上调用 CreateJoint 时,Box2D 会爆炸。我是 box2d 的新手,我无法确定我在这里做错了什么。我正在使用 Cocos2d 并启用了触摸功能。在 ccTouchesBegan 委托方法中,我正在测试用户是否触摸了感兴趣的身体;“桨”。
建立 b2MouseJointDef 对象后,此行会导致异常:
_mouseJoint = (b2MouseJoint *)_world->CreateJoint(&md);
World 对象似乎试图创建连接。这里是整个 touchesBegan 回调。有任何想法吗??
- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
if (_mouseJoint != NULL) return;
UITouch *myTouch = [touches anyObject];
CGPoint location = [myTouch locationInView:[myTouch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
b2Vec2 locationWorld = b2Vec2(location.x/PTM_RATIO, location.y/PTM_RATIO);
if (_paddleFixture->TestPoint(locationWorld)) {
b2MouseJointDef md;
md.bodyA = _groundBody;
md.bodyB = _paddleBody;
md.target = locationWorld;
md.collideConnected = true;
md.maxForce = 1000.0f * _paddleBody->GetMass();
_mouseJoint = (b2MouseJoint *)_world->CreateJoint(&md);
_paddleBody->SetAwake(true);
}
}