box2d b2BodyDef可以在Cocos2D中拥有一个massdata属性吗?

时间:2012-03-09 12:56:37

标签: flash cocos2d-iphone box2d-iphone

我想知道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;
        }

任何人都可以帮帮我。

1 个答案:

答案 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);
相关问题