我正在尝试使用“libGDX”和“Box2D”创建游戏。
我在游戏中有多个形状,因此我创建了一个 BodyFactory
类,它使用 PolygonShape
问题是,当我使用 Shape.setAsBox()
方法创建主体时,一切正常,但是当我使用 PolygonShape.set(vertices)
创建主体时>,物体的位置如我所愿地改变,但它们根本不会旋转。
这就是我从天上掉下 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();
}
最佳答案
我认为问题在于您只创建了一个 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();
}
关于java - Box2D 多边形体不旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30152358/