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

标签 java box2d libgdx

我对 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/

相关文章:

javascript - 如何在 emscripten 中迭代 Box2D 中的实体列表?

android - 旋转后, Sprite 和矩形位置在 Libgdx 中未对齐

java - 停止开始音乐 - Libgdx Java

java - 如何使用CDI从请求中获取 token ?

Java 包包含其他文件中的方法

java - Spring Security 设置过期 url

java - <#assign x=${size}> 它没有给出正确的结果

2d - Box2D 中一米是多少像素?

java - Box2d碰撞问题

java - libgdx:SpriteBatch 不与 PerspectiveCamera 一起显示