1
我做一些成熟的角色控制,這樣的事情 - >BOX2D platformer 我使用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()方法中的摩擦時,已經啓動的協議的摩擦不會改變。有人可以幫我解決這個問題嗎?
感謝的建議,但是當我改變它結束之前不要刷新聯繫。我做錯了什麼? – Shefchenko
@Shaq我其實從來沒有必要這樣使用它。我可以在Contact.setFriction的JavaDoc的閱讀是這樣的:「替換缺省摩擦混合物,可以在b2ContactListener :: PreSolve稱之爲該值一直保持到設置或復位。」你在PreSolve中設置了它嗎? – noone
謝謝@noone,你救了我的命。我知道我應該避免這樣的評論,但是,我很興奮,因爲它的工作原理。我將它設置在preSolve()上,但方式錯誤。現在我有布爾變量,我用preSolve()設置摩擦力。 – Shefchenko