0

私はこの大量のものがどのように機能するかを理解することはできません。私はbox2dのドキュメント(現時点ではcocos2dにない多くのコマンドがあります)を読み、大量のことを理解しようとしていました。

私は体の密度を変えても何も変わらないことを知っています:

    //add body
b2BodyDef spriteBodyDef;
spriteBodyDef.type =b2_dynamicBody; //b2_staticBody;
spriteBodyDef.position.Set(pilot1.position.x/PTM_RATIO,pilot1.position.y/PTM_RATIO);
spriteBodyDef.userData = pilot1;
pilot1Body = world->CreateBody(&spriteBodyDef);    
b2CircleShape spriteShape; //b2polygon-for box shape
spriteShape.m_radius = 15.0/PTM_RATIO;
b2FixtureDef spriteShapeDef;
spriteShapeDef.restitution = 0.4f;
spriteShapeDef.shape = &spriteShape;
//spriteShapeDef.density=10.0f;

b2Fixture *fix=pilot1Body->GetFixtureList();
fix->SetDensity(1.5f);
pilot1Body->ResetMassData();
NSLog(@"mass2: %f", pilot1Body->GetMass());  
spriteShapeDef.isSensor = false;
pilot1Body->CreateFixture(&spriteShapeDef);
    [self addChild:pilot1];

どうもありがとう。

4

1 に答える 1

2

を使用してボディに取り付けられた一部またはすべてのフィクスチャに新しい密度を設定しb2Fixture::SetDensity、次に を呼び出す必要があります。次にb2Body::ResetMassData例を示します。

    NSLog(@"mass1: %f", body->GetMass());
    b2Fixture *fix = body->GetFixtureList();
    while (fix) {
        fix->SetDensity(1.5f);
        fix = fix->GetNext();
    }
    body->ResetMassData();
    NSLog(@"mass2: %f", body->GetMass());
于 2012-01-27T22:51:55.927 に答える