我试图用" libGDX"创建游戏。和#34; Box2D"。
我在游戏中有几种形状,因此我创建了一个BodyFactory
类,使用PolygonShape
创建我的身体
问题是,当我使用Shape.setAsBox()
方法创建一个实体时,一切正常,但是当我使用PolygonShape.set(vertices)
创建实体时,实体的位置会按照我的意愿改变,但是他们赢了# 39; t完全旋转。
当我从天上掉下3具尸体时,这就是我得到的(稳定之后):
广场旋转并停留在地面上,其他形状赢得了。
另请注意,我尝试添加
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();
}
答案 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();
}