Box2D围绕其中心旋转身体.LIBGDX

时间:2017-10-08 18:11:24

标签: java android libgdx box2d physics

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

旋转精灵的代码:

$(document).ready(function(){
  $('.mark').click(function(){;
    var y = $(this).outerHeight();
    var z =$(window).scrollTop();
    $('body').animate({scrollTop:z+y},800);
  });
});

旋转体代码:

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

正在发生的事情的图像:

Here, rotation is around (-/+)90 degrees

Here rotation is broken for every wolf

1 个答案:

答案 0 :(得分:2)

它可能与身体或固定物的原点的定义有关。你能告诉我你用来创建车身和夹具的代码吗?

<强> EDITED

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