2010-11-29 17 views
1

私はbox2dで新しく、2体のジョイントを作成しようとしました。 私はジョイントin Box2d with cocos2d

b2RevoluteJointDef jointDef; 

     jointDef.bodyA=worm_head; 
     jointDef.bodyB=worm_body; 

     jointDef.lowerAngle = -0.25f * b2_pi; // -45 degrees 

     jointDef.upperAngle = 0.25f * b2_pi; // 45 degrees 
     jointDef.enableLimit=true; 
     jointDef.maxMotorTorque = 10.0f; 

     jointDef.motorSpeed = 10.0f; 

     jointDef.enableMotor = true; 
     joint=(b2DistanceJoint*)_world->CreateJoint(&jointDef); 

のような共同を書いたが、ヘッドが移動しているときに体が動いていません。

私のダニ方法はなぜ

- (void)tick:(ccTime) dt { 

    //we update the position of the b2body based on the sprite position 
    for (b2Body* body = _world->GetBodyList(); body != nil; body = body->GetNext()) 
    { 
     if (body->GetUserData() != NULL) { 
      CCSprite *spritedata = (CCSprite *)body->GetUserData(); 

      if(spritedata.tag==1) 
      { 
       b2Vec2 b2Position = b2Vec2(SCREEN_TO_WORLD(spritedata.position.x), 
            SCREEN_TO_WORLD(spritedata.position.y)); 
       float32 b2Angle = -1 * CC_DEGREES_TO_RADIANS(spritedata.rotation); 
       body->SetTransform(b2Position,b2Angle); 
      } 
      else { 
       spritedata.position = ccp(body->GetPosition().x * PTM_RATIO, 
             body->GetPosition().y * PTM_RATIO); 
       spritedata.rotation = -1 * CC_RADIANS_TO_DEGREES(body->GetAngle()); 
      } 

     } 

    } 
} 

動いていないのですか?コードをどのように変更すればよいですか?

答えて

1

b2RevoluteJointDefでは、一方の本体は静的本体であり、他方は動的本体です。私の問題は2つの動的な問題を使用しています。今、それは解決しました。

関連する問題