2

私はプラットフォーマーのキャラクターコントロールを作っています、このようなもの -> BOX2Dプラットフォーマー ContactListener インターフェイスを使用しています。私の問題は、リンク内のコードからのこれらの行の(摩擦)です->

if(!grounded) {
    playerPhysicsFixture.setFriction(0f);
    playerSensorFixture.setFriction(0f);            
} else {
    if(!Gdx.input.isKeyPressed(Keys.A) && !Gdx.input.isKeyPressed(Keys.D) && stillTime > 0.2) {
        playerPhysicsFixture.setFriction(100f);
        playerSensorFixture.setFriction(100f);
    }
    else {
        playerPhysicsFixture.setFriction(0.2f);
        playerSensorFixture.setFriction(0.2f);
    }
}

足がすでに地面に触れているときに摩擦を変更する方法がわかりません。キャラクターの onUpdate() メソッドでフリクションを変更しても、既に開始されている conact のフリクションは変更されません。誰かがこの問題で私を助けることができますか?

4

1 に答える 1

3

b2Fixture から:

// Set the coefficient of friction. This will _not_ change the friction of
// existing contacts.
void SetFriction(float32 friction);

だからあなたは完全に正しいです。Box2D の最近のバージョンではContact.setFriction()、その動作を補うために追加されました。このバージョンの Box2D が追加された libGDX のバージョンはわかりませんが、少なくとも libGDX のナイトリーでは、これらの新しいメソッドが利用可能です。

で摩擦を設定ContactしますContactListener

于 2013-10-14T14:53:13.923 に答える