【问题标题】:Box2D wrong body rotationBox2D错误的身体旋转
【发布时间】:2015-07-01 22:04:33
【问题描述】:

我用Tiled 制作了一张地图,并将所有带有Box2DMapObjectParser 的box2d 物体加载到我的世界中,除了一件事之外,一切都运行良好。我正在使用较新版本的 Tiled,其中实现了身体旋转。我正在尝试自己在 Box2DMapObjectParser 中实现它,这就是我从中得到的:

编辑:

还有游戏:

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

我这样设置旋转

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

degree 是来自编辑器的值。有人知道我做错了什么吗?我也尝试过类似

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

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

【问题讨论】:

  • 使用 -degree*MathUtills.degreetoradian
  • 我试过了,但没有帮助。看起来编辑器从它的中心旋转 body 并且 box2d setTransform 从左下角旋转它。有没有办法像编辑器一样旋转它?
  • @BeforeBigBang 你能分享你的解决方案吗?我遇到了同样的问题,我无法弄清楚接受的答案中的建议。
  • @LiorIluz 对不起伙计,我已经很久没有这样做了,我没有 src 了。

标签: java libgdx box2d tiled


【解决方案1】:

Tiled 将矩形对象的左上角旋转。 Box2D 围绕身体的位置旋转,所以最简单的解决方案可能是创建你的盒子夹具,使身体的位置在左上角(如果你使用b2PolygonShape::SetAsBox,这意味着通过一个中心在一半宽度和负高度的一半(因为 Y 轴是倒置的))。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多