我正在尝试在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)。