Box2d / LibGDX:沿精灵的原点旋转灯具。见插图

时间:2017-02-23 05:45:52

标签: libgdx box2d

如果我expect到这个圆形精灵的身体,它会沿着它的中心旋转,这就是我想要发生的事情。但是它的碰撞掩模夹具(绿色)沿着它自己的中心而不是精灵的中心旋转。如何让它沿着精灵的中心旋转,以便碰撞面具和精灵保持同步?

例如,在下图中,当圆圈旋转并且红色部分向左上方移动时,我希望绿色碰撞遮罩位于#3位置。但#2发生了。我知道为什么会这样,但我怎样才能实现我在这里要完成的目标呢?

https://docs.mongodb.com/manual/reference/operator/update/set/

1 个答案:

答案 0 :(得分:1)

你需要创建两个灯具 - 一个精灵大小(精灵应该用这个灯具居中),第二个移动到圆圈边缘(你当前的碰撞夹具)

BodyDef bodyDef;

...

Body body = world.createBody(bodyDef);

FixtureDef circleFixture = new FixtureDef();
FixtureDef collisionFixture = new FixtureDef();

CircleShape circle = new CircleShape();
circle.setRadius(spriteRadius);
circleFixture.shape = circle;

//same for collision fixture with proper shape - (0,0) i a center of circle
float[] vertices = new float[]{x1, y1, x2, y2...};

ChainShape chain = new ChainShape();
chain.createLoop(vertices);
fixtureDefs.peek().shape = chain;

现在,如果您需要将碰撞夹具保持在圆的边缘,只需定义将其放置在那里的点 - 例如,对于半径为2顶点的圆

{5, -1, 6, 0, 5, 1, 4, 0}

会给出像

这样的东西

enter image description here

并且在旋转之后它应该像

一样

enter image description here

当然你需要在圆形夹具的中心渲染你的精灵