【发布时间】:2014-06-04 07:32:12
【问题描述】:
下图举例说明了我正在尝试做的事情。多边形主体应旋转保持其初始位置,而红点(也可能是另一个主体)保持在中心。
这是我尝试过的,但是它会在红点附近移动:
Vector2 position = body2.getWorldCenter();
body2.setTransform(position, body2.getAngle() + 0.01f);
有什么想法吗?
更新 1
这是创建多边形主体的方法:
private Body createPolygonBody(Vector2 pos) {
// 0. Create a loader for the file saved from the editor.
BodyEditorLoader loader = new BodyEditorLoader(Gdx.files.internal("shot/wall"));
// 1. Create a BodyDef, as usual.
BodyDef bd = new BodyDef();
bd.position.set(pos);
bd.type = BodyType.StaticBody;
// 2. Create a FixtureDef, as usual.
FixtureDef fd = new FixtureDef();
fd.density = 1;
fd.friction = 0.5f;
fd.restitution = 0.3f;
fd.filter.categoryBits = CATEGORY_SCENERY;
fd.filter.maskBits = MASK_SCENERY;
// 3. Create a Body, as usual.
Body body = world.createBody(bd);
// 4. Create the body fixture automatically by using the loader.
loader.attachFixture(body, "one_door",fd, 3f);
return body;
}
【问题讨论】:
-
为此,您必须定义多边形形状相对于红点中心的点。你能发布创建身体的代码吗?
-
感谢@DennisKorbar 对此的关注。我已经更新了帖子。我使用 Aurilien 的“Physics Body Editor”来生成顶点。
-
不幸的是我不知道那个编辑器。该文件是否包含多边形的坐标?您基本上要做的是确保坐标相对于点 (0,0)。然后将身体准确定位在红色圆圈上。
-
@DennisKorbar 是的,编辑器生成坐标并且可以相对于点生成坐标。感谢您指出这种可能性,它现在按预期工作。如果您想放弃答案,我可以接受...
-
太棒了!我已经制定了来自 cmets 的信息作为答案。
标签: box2d