我想知道box2d b2BodyDef是否具有massdata属性,或者是否可以某种方式访问它。我不确定这是否可以在Cocos2D中完成,但我已经在我试图在cocos2d中重新实现的flash代码中看到了它。 以下是带来问题的代码。
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;
}
任何人都可以帮帮我。
答案 0 :(得分: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);