我制作平台角色控件,就像这样 - > 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()方法中改变摩擦时,已经启动的条件的摩擦力不会改变。有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
来自b2Fixture:
// Set the coefficient of friction. This will _not_ change the friction of
// existing contacts.
void SetFriction(float32 friction);
所以你完全正确。在Box2D的最新版本中,他们添加了Contact.setFriction()
来支持该行为。我不确定在哪个版本的libGDX中添加了这个版本的Box2D,但至少在libGDX的夜晚,这些新方法是可用的。
因此,请设置Contact
中ContactListener
的摩擦力。