Libgdx Box2D体旋转点精灵位置

时间:2016-03-09 14:22:57

标签: libgdx rotation sprite box2d

我需要我的身体围绕特定点旋转,如图所示。 enter image description here 我已经通过这行代码完成了(如果有更好的方法,请告诉我)

function [ m ] = testmean( data )
global iterationcounter

m=mean(data);

iterationcounter=iterationcounter+1

end

现在我想将精灵定位到我的旋转身体。我在这里做了什么

PolygonShape shape = new PolygonShape();
shape.setAsBox(1.8f / PPM, 0.2f / PPM, new Vector2(2,2), 0); // vector2 is

以及我如何绘制所有内容

sprite.setOrigin(sprite.getWidth() / 2, sprite.getHeight() / 2);
sprite.setPosition(body.getPosition().x * 32 - sprite.getWidth() / 2, body.getPosition().y * 32 - sprite.getHeight() / 2);

运行代码时会发生奇怪的事情。我看到身体正确旋转,但精灵围绕其原点(精灵的中间)旋转,因为这条线public void draw(SpriteBatch sb){ System.out.println(body.getWorldCenter()); sprite.setRotation(body.getAngle() * MathUtils.radiansToDegrees); sprite.draw(sb); } 但是我需要精灵位置总是与我的身体位置相同。我该怎么办呢?

1 个答案:

答案 0 :(得分:0)

所有box2d机构的来源都是它们的位置。

重要提示:box / circle类型的box2d实体以其位置为中心,而其他类型的实体则不是。

如果要将旋转与精灵同步,则应将精灵原点放在身体位置上,然后旋转。

示例:如果您在位置0,0处有正文,而具有原点1,1的精灵,则应将该精灵放在位置-1,-1上,以便两者同步旋转!