Java Box2D围绕物体的中心旋转物体。。LIBGDX

Java Box2D围绕物体的中心旋转物体。。LIBGDX,java,android,libgdx,box2d,physics,Java,Android,Libgdx,Box2d,Physics,我试图在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.t

我试图在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);
正在发生的事情的图像:


它可能与主体或固定装置原点的定义有关。你能给我看一下你用来创建车身和夹具的代码吗

已编辑

好的,我已经检查了你的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)。

它可能与主体或固定装置原点的定义有关。你能给我看一下你用来创建车身和夹具的代码吗

已编辑

好的,我已经检查了你的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)。

im使用实体的物理实体编辑器。代码:[link]()我可以看一下你用来加载装置的json文件吗?我相信用0.5减去顶点我用0.5减去所有顶点,所有的都成功了!谢谢:)这篇文章帮了我很大的忙,非常感谢@Taivaanm使用物理身体编辑器来编辑身体。代码:[link]()我可以看一下你用来加载装置的json文件吗?我相信用0.5减去顶点我用0.5减去所有顶点,所有的都成功了!谢谢:)这篇帖子帮了我很多忙,非常感谢@taivan