提问者:小点点

Box2D围绕其中心旋转物体… LIBGDX


我试着把一个物体绕着它的中心旋转。精灵的旋转是有效的,但身体所做的是围绕其左上角旋转。

旋转精灵的代码:

    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);

正在发生的事情的图片:


共1个答案

匿名用户

它可能与物体或固定装置的起源的定义有关。你能给我看看你用来创建车身和夹具的代码吗?

已编辑

好的,我检查了你的JSON,这正是我所想的。在这些JSON中,夹具的定义是主体的中心位于其左下角。

点(0,0)是主体的中心,您定义的夹具在其左下角有该点,这就是它围绕左下角旋转的原因。

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

如上所述,点(0,0)是主体的中心,因此,为了使夹具和主体的中心对齐,顶点应围绕作为主体中心的点(0,00)定义。

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