Box2D 错误 body 旋转

Box2D wrong body rotation

我用 Tiled and load all box2d bodies with Box2DMapObjectParser 制作了一张到我的世界的地图,除一件事外一切正常。我使用的是较新版本的 Tiled,其中实施了 body 旋转。我正在尝试自己在 Box2DMapObjectParser 中实现它,这就是我从中得到的结果:

编辑:

以及游戏:

如您所见,右边的矩形有一个名为 Rotation 的 属性,因此我可以轻松地从属性中获取,但我不知道它有什么问题。

我是这样设置旋转的

fixture.getBody().setTransform(fixture.getBody().getPosition(), degree);

其中 degree 是来自编辑器的值。有谁body 知道我哪里做错了吗?我也试过做类似

fixture.getBody().setTransform(fixture.getBody().getPosition(), degree*MathUtils.degreesToRadians);

但它也设置了错误的旋转。

Tiled 将矩形 objects 旋转 top-left 个角。 Box2D 围绕 body 的位置旋转,因此最简单的解决方案可能是创建您的盒子夹具,使 body 的位置在 top-left 中(如果您使用 b2PolygonShape::SetAsBox 这意味着在宽度的一半和负高度的一半处传递一个中心(因为 Y 轴是倒转的)。