我正在尝试在box2d中绕其中心旋转身体。精灵的旋转有效,但是物体的动作是围绕其左上角旋转。

旋转精灵的代码:

    public void drawBitMap(Bitmap bit, float x, float y, float width, float height, float rotation){
    Sprite sprt = null;
    if (!sprts.containsKey(bit)) {
         sprt = new Sprite(bit.texture);
        sprts.put(bit, sprt);
    }else{
        sprt = sprts.get(bit);
    }
    sprt.setOrigin(width/2,height/2);
    sprt.setRotation(rotation);
    sprt.setPosition(x,y);

    sprt.setSize(width,height);
    sprt.draw(this);
}


旋转体代码:

 body.setTransform(x, y, rotation * MathUtils.degreesToRadians);


正在发生的图像:

java - Box2D绕其中心旋转主体。.LIBGDX-LMLPHP

java - Box2D绕其中心旋转主体。.LIBGDX-LMLPHP

最佳答案

它可能与物体或固定装置的原点定义有关。您能告诉我您用来创建实体和固定装置的代码吗?

已编辑

好的,我检查了您的JSON,这正是我的想法。在这些JSON中,灯具的定义是将主体的中心放在其左下角。

点(0,0)是实体的中心,而您定义的灯具在其左下角具有该点,这就是为什么它绕其左下角旋转的原因。

这听起来可能令人困惑,所以我将举一个简单的例子:一个正方形。
具有相同问题的大小为1的正方形的顶点将定义为(0,1),(1,1),(1,0)和(0,0)。

如上所述,点(0,0)是实体的中心,因此,为了使固定装置和实体的中心线对齐,应在以该实体(0,0)的点为中心定义顶点)。

正确的正方形具有以下顶点:(-0.5,0.5),(0.5,0.5),(0.5,-0.5),(-0.5,-0.5)。

07-24 15:04
查看更多