Может ли box2d b2BodyDef иметь свойство massdata в Cocos2D? - PullRequest
0 голосов
/ 09 марта 2012

Я хочу знать, есть ли у box2d b2BodyDef свойство massdata или к нему можно получить доступ каким-либо образом. Я не уверен, можно ли это сделать в Cocos2D, но я видел это во флэш-коде, который я пытаюсь повторно реализовать в 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 Ответ

1 голос
/ 09 марта 2012

Доступ к данным о массе можно получить после создания тела:

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

Но вы также можете просто установить плотность через определение прибора:

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