2012-03-09 20 views
0

我想知道box2d b2BodyDef是否有massdata屬性,或者是否可以以某種方式訪問​​它。我不確定這是否可以在Cocos2D中完成,但我已經在我試圖在cocos2d中重新實現的閃存代碼中看到它。 下面是導致問題的代碼。Can box2d b2BodyDef在Cocos2D中有一個massdata屬性嗎?

for (var i:Number = 0; i < numSections - 1; i++) 
      { 
      // One rope section body 
      ropeBodyDef.position.Set(0, starBody.GetPosition().y - dY * i/numSections); 
      ropeBodyDef.massData.mass = 0.8 + 0.8 * i/numSections; 
       //ropeBody. 
      ropeBody = world.CreateBody(ropeBodyDef);    
      ropeBody.CreateShape(ropeShapeDef); 

      ropeSegments.push(ropeBody); 

      // One rope section joint 
      jointDef.Initialize(ropeStart, ropeBody, ropeStart.GetPosition(), ropeBody.GetPosition()); 
      joint = world.CreateJoint(jointDef) as b2DistanceJoint; 
      joint.m_length = dY/numSections; // this is probably something bad, but I need it for the whole thing to work. 

      // update startpoint for next joint 
      ropeStart = ropeBody; 
     } 

任何人可以請幫助我。一旦你創建身體

回答

1

海量數據可訪問:

b2Body *body = world->createBody(&bodyDef); 
b2MassData massData; 
body->GetMassData(&massData); 
massData.mass = NEW_MASS; 
body->setMassData(&massData); 

但是,你也可以只通過夾具DEF設置密度:

b2FixtureDef fixtureDef; 
fixtureDef.density = 1.0; 
aBody->createFixture(&fixtureDef);