0

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);
}

}

4

0 に答える 0