2012-03-09 2 views
0

Я хочу знать, имеет ли box2d b2BodyDef свойство massdata или может быть каким-то образом доступ к нему. Я не уверен, что это можно сделать в Cocos2D, но я видел его в flash-коде, который я пытаюсь повторно реализовать в cocos2d. Вот код, который вызвал вопрос.Может ли box2d b2BodyDef иметь свойство massdata в Cocos2D?

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