我对 libgdx 非常满意,喜欢使用它。但是,我是 box2d 的新手,所以我希望比我聪明的人能帮助我。
我有一个简单的测试屏幕,其中一堆静态方形瓷砖构成地板,动态物体(圆形)在周围弹跳。
我想做的是增加地板的摩擦力,这样球就不会滚动太多。就像地板是草而不是木头一样。
我在网上找到了一些东西,但似乎都不起作用。我尝试过的最有前途的事情是:
tileBody.getFixtureList().get(0).setFriction(0.9f);
但它似乎什么也没做。
阅读 box2d 文档建议我应该在最初定义对象时在 fixture def 上设置摩擦:
FixtureDef fdef = new FixtureDef();
fdef.shape = wallshape;
fdef.density = 1.0f;
fdef.friction = 0.9f;
然而,这似乎也无法阻止球的滚动。
有更好的方法吗?我可以减少恢复原状,但这只会阻止它弹跳,对吧?
最佳答案
Body groundBody = world.createBody(groundBodyDef);
PolygonShape groundshape = new PolygonShape();
groundshape.setAsBox(30, 1.0f);
FixtureDef groundFixture = new FixtureDef();
groundFixture.density=0.0f;
groundFixture.shape = groundshape;
groundFixture.restitution = .5f;
groundFixture.friction=0f;
groundBody.createFixture(groundFixture);
groundshape.dispose();
这对我有用。如果沿着地面移动的物体存在摩擦并且不是由暗物质构成,它们应该会减速。
关于java - 在 libgdx 中,如何为 box2d Body 对象添加摩擦力?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11182997/