Libgdx 摩擦力在Box2d中不起作用

Libgdx 摩擦力在Box2d中不起作用,libgdx,box2d,Libgdx,Box2d,我用Libgdx和Box2d编写了一个简单的游戏。我的主要代码如下: BodyDef bodyDef = new BodyDef(); bodyDef.type = BodyType.StaticBody; bodyDef.position.set(new Vector2(mainGear.getX() + mainGear.getOriginX(), mainGear.getY() + mainGear.getOrigin

我用Libgdx和Box2d编写了一个简单的游戏。我的主要代码如下:

    BodyDef bodyDef = new BodyDef();
    bodyDef.type = BodyType.StaticBody;
    bodyDef.position.set(new Vector2(mainGear.getX()
            + mainGear.getOriginX(), mainGear.getY()
            + mainGear.getOriginY()));
    body = world.createBody(bodyDef);

    float r = 231.5f;
    Vector2[] vertexs = new Vector2[36];
    for (int i = 0; i < 36; i++) {
        vertexs[i] = new Vector2(MathUtils.cosDeg(10 * i) * r,
                MathUtils.sinDeg(10 * i) * r);
    }

    ChainShape shape = new ChainShape();
    shape.createLoop(vertexs);
    FixtureDef fd = new FixtureDef();
    fd.shape = shape;
    fd.friction = 0.5f;
    fd.density = 1;
    body.createFixture(fd);

    // Dynamic Body
    BodyDef bodyDef1 = new BodyDef();
    bodyDef1.type = BodyType.DynamicBody;
    bodyDef1.position.set(200, 350);
    body1 = world.createBody(bodyDef1);
    CircleShape dynamicCircle = new CircleShape();
    dynamicCircle.setRadius(16f);
    FixtureDef fixtureDef = new FixtureDef();
    fixtureDef.shape = dynamicCircle;
    fixtureDef.density = 1f;
    fixtureDef.friction = 0.5f;
    fixtureDef.restitution = 0.5f;
    body1.createFixture(fixtureDef);
BodyDef BodyDef=新的BodyDef();
bodyDef.type=BodyType.StaticBody;
bodyDef.position.set(新矢量2(mainGear.getX)()
+mainGear.getOriginX(),mainGear.getY()
+mainGear.getOriginY());
body=world.createBody(bodyDef);
浮子r=231.5f;
Vector2[]顶点=新的Vector2[36];
对于(int i=0;i<36;i++){
顶点[i]=新矢量2(数学余弦度(10*i)*r,
数学信度(10*i)*r);
}
ChainShape shape=新ChainShape();
shape.createLoop(顶点);
FixtureDef fd=新的FixtureDef();
fd.shape=形状;
fd.摩擦力=0.5f;
fd.密度=1;
车身夹具(fd);
//动力体
BodyDef bodyDef1=新的BodyDef();
bodyDef1.type=BodyType.DynamicBody;
bodyDef1.位置设置(200350);
body1=world.createBody(bodyDef1);
CircleShape dynamicCircle=新的CircleShape();
动态圆设定半径(16f);
FixtureDef FixtureDef=新的FixtureDef();
fixtureDef.shape=动态圆;
固定件密度=1f;
固定件摩擦力=0.5f;
fixtureDef.Restoration=0.5f;
主体1.createFixture(fixtureDef);

但是当我旋转大圆圈时,小圆圈仍然像我不旋转时一样正常移动。看起来两个圆圈之间的摩擦力不起作用。我想要的是,当我向右(或向左)旋转大圆时,摩擦力会拉动小圆跟随它

当你说“看起来像…”时,你是在看Box2D调试绘图显示还是你自己制作的其他东西?是的,我看了Box2D调试绘图显示,我看到小圆圈没有移动。我还做了另一个项目,在盒子上方有一个小圆圈(两者的摩擦力都为0.5)。当盒子移动时,圆圈仍然站在那里。嗨,问题是我用setTransform函数旋转了大圆圈,所以它忽略了所有的物理效应。那么,如何将大圆旋转到指定的角度并保持物理效果呢?