【问题标题】:Rotating Box2D StaticBody旋转 Box2D 静态体
【发布时间】:2014-05-21 14:01:46
【问题描述】:

我知道,关于这个主题有问题,但我无法让我的 StaticBody 旋转。这是代码,我尝试旋转它:

BodyDef bDef = new BodyDef();
Body body;

bDef.position.set(x, HEIGHT-y);
bDef.type = BodyType.StaticBody;
angle = 50;
body = world.createBody(bDef);
PolygonShape pShape = new PolygonShape();
pShape.setAsBox(width, height);
FixtureDef fDef = new FixtureDef();
fDef.shape = pShape;
body.createFixture(fDef);

body.setTransform(body.getPosition(), (float) (angle*Math.PI/180));

用这一行打印出值:

System.out.println(body.getTransform().getRotation()/(Math.PI/180));

返回:50.0000002530119,但盒子不旋转。

【问题讨论】:

    标签: rotation libgdx box2d


    【解决方案1】:

    我认为你不应该在静态物体上使用 setTransform。

    你是在创建body之后直接使用setTransform吗? 然后你可以尝试在 b2BodyDef 上设置角度。

    bDef.angle = 50*Math.PI/180;
    

    否则你可能会更好地使用运动体。

    另外你可以通过 setAsBox 方法设置角度。

    【讨论】:

    • 是的,我已经尝试过这样做,但它似乎不起作用。
    • 将角度传递给 setAsBox 是一个选项吗?
    • 好的,还有另一种方法,我必须定义中心和角度,所以它起作用了。但我不确定我是否应该接受你的 anwser,因为解决方案在你的评论中,而不是 anwser。
    • 我不知道。我对参与 stackoverflow 有点陌生。 ;-) 我已经编辑了我的答案,并从我的评论中包含了解决方案。所以解决方案现在也是答案的一部分。
    【解决方案2】:

    我想建议您阅读文档,或者至少查看一些指南(例如 good youtube channel)。

    静态物体不应该改变位置或角度。使用运动体。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-24
      • 1970-01-01
      • 1970-01-01
      • 2014-07-02
      相关资源
      最近更新 更多