Tag: box2d libgdx

在libgdx中,如何为box2d Body对象添加摩擦力?

我正在用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; 然而,这似乎并没有阻止球的滚动。 有更好的方法吗? 我可以减少恢复原状,但那只会阻止它恢复正常吗?

如何使用libgdx contactlistener

我刚刚开始使用Libgdx的Box2d引擎,但我根本不明白何时应该调用Contactlistener的方法。 一方面是“开始接触”,另一方面是“结束接触”。 我应该在哪里打电话给他们,以获得某个夹具接触他人的数量? 我如何实现Contactlistener ? 教程中的重定向将回答我的问题。 搜索谷歌时我没有找到任何东西。 这个对我有很大帮助,但是它是为C ++编写的,并没有将实现引入主游戏圈。 谢谢我帮忙;)

Box2d libgdx,有点混淆像素到米的东西

所以我理解这个概念。 想法是box2d或多或少以米为单位工作,所以你需要从像素转换到它。 说得通。 我在这里关注box2d的教程/介绍。 它提到进行转换并为您提供一些示例使用量。 现在,这一切都很好,但我发现当我使用这些技术时,调试器框似乎没有呈现它们应该的位置。 然而,碰撞确实按预期工作。 在我的GameScreen类中,这是我如何初始化地面: ground = new BodyDef(); // set the position half way up the ground ground.position.set(0,16 * GameScreen.WORLD_TO_BOX); groundBody = world.createBody(ground); groundShape = new PolygonShape(); // make the height 16px so it doubles to 32 groundShape.setAsBox(Gdx.graphics.getWidth() * GameScreen.WORLD_TO_BOX, 16.0f * GameScreen.WORLD_TO_BOX); groundBody.createFixture(groundShape, 0.0f); 我在该屏幕中的渲染方法是这样的: public void render(float delta) { […]