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() 方法中的摩擦时,已经开始的接触的摩擦没有改变。有人可以帮我解决这个问题吗?

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 回答