如果我expect
到这个圆形精灵的身体,它会沿着它的中心旋转,这就是我想要发生的事情。但是它的碰撞掩模夹具(绿色)沿着它自己的中心而不是精灵的中心旋转。如何让它沿着精灵的中心旋转,以便碰撞面具和精灵保持同步?
例如,在下图中,当圆圈旋转并且红色部分向左上方移动时,我希望绿色碰撞遮罩位于#3位置。但#2发生了。我知道为什么会这样,但我怎样才能实现我在这里要完成的目标呢?
https://docs.mongodb.com/manual/reference/operator/update/set/
答案 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}
会给出像
这样的东西并且在旋转之后它应该像
一样当然你需要在圆形夹具的中心渲染你的精灵