Box2D Polygon Bodies不旋转

时间:2015-05-10 14:05:58

标签: java libgdx box2d

我试图用" libGDX"创建游戏。和#34; Box2D"。 我在游戏中有几种形状,因此我创建了一个BodyFactory类,使用PolygonShape创建我的身体

问题是,当我使用Shape.setAsBox()方法创建一个实体时,一切正常,但是当我使用PolygonShape.set(vertices)创建实体时,实体的位置会按照我的意愿改变,但是他们赢了# 39; t完全旋转。

当我从天上掉下3具尸体时,这就是我得到的(稳定之后):

enter image description here 广场旋转并停留在地面上,其他形状赢得了。

另请注意,我尝试添加

body.setFixedRotation(false);

到我的代码,但没有任何改变。

形状的摩擦,质量和密度也是合理的。

这是我的代码的一部分,它创建了一个" PolygonShape"来自档案:

...
Body body = world.createBody(bodyDef);
...
for (int i = 0; i < bodyConf.meshData.length; i++) {
    PolygonShape polygonShape = new PolygonShape();
    polygonShape.set(bodyConf.meshData[i]);
    fixtureDef.shape = polygonShape;
    body.createFixture(fixtureDef);
    polygonShape.dispose();
}

1 个答案:

答案 0 :(得分:2)

我认为问题在于您只创建一个 Body并附加三个 Fixture

你真正想要的是三个 Body,其中每个一个 Fixture。这样,每个身体都可以独立于其他身体旋转。

for (int i = 0; i < bodyConf.meshData.length; i++) {
    BodyDef bodyDef = ...;
    Body body = world.createBody(bodyDef);
    PolygonShape polygonShape = new PolygonShape();
    polygonShape.set(bodyConf.meshData[i]);
    fixtureDef.shape = polygonShape;
    body.createFixture(fixtureDef);
    polygonShape.dispose();
}