1

Andengine Box2D 物理体は、重量を増やしても回転しません。それ以外の場合は完全に回転します。プレイヤーが爆弾を投げると、プレイヤーが爆弾で爆弾を投げると、体の自然な重量が完全に回転しますが、爆弾の重量を増やすと、爆弾を投げることができます。爆弾が回転しません。ここで立ち往生しています。助けてください。ありがとうございました。

if (bomb)           
{
    mScene.detachChild(target);
    target = null;      
    bombFire = new Sprite(mBall2.getX()+mBall2.getWidth()/2,mBall2.getY(),bombFireRegion);
    mScene.attachChild(bombFire);
    bombBody = PhysicsFactory.createCircleBody(mPhysicsWorld, bombFire,BodyType.DynamicBody, bombFixDef);
    bombBody.setMassData(bombMass);
    mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(bombFire, bombBody, true, true));               
    Vector2 v = new Vector2((xpt-mBall2.getX()),(ypt-mBall2.getY()));
    bombBody.applyLinearImpulse(v,bombBody.getWorldCenter());
}
4

1 に答える 1

5

既存のボディの質量を変更するには、そのボディの既存の massData をスケーリングするのが最適です。これにより、質量の中心が適切な場所に維持され、質量と回転慣性が正しく一致するようになります。

b2MassData massData;
body->GetMassData(&massData);

float scaleFactor = desiredMass / massData.mass;
massData.mass *= scaleFactor;
massData.I *= scaleFactor;

body->SetMassData(&massData);

注意すべきことの 1 つは、これがボディのフィクスチャの密度に影響を与えないことです。この後でボディに器具を追加または削除すると、質量データは質量データではなく、器具から再計算されます。したがって、フィクスチャを変更した後、これを再度実行して、目的の質量を復元する必要があります。

于 2012-05-07T12:21:13.533 に答える