旋转保持初始位置的多边形box2d体

时间:2014-06-02 19:12:16

标签: box2d

下面的图片举例说明了我要做的事情。多边形体应该保持其初始位置旋转,红点(也可能是另一个体)保持在中心位置。

enter image description here

这是我尝试过的,但它会移动到红点附近:

        Vector2 position = body2.getWorldCenter();
        body2.setTransform(position, body2.getAngle() + 0.01f);

有什么想法吗?

更新1

以下是创建Polygon主体的方法:

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;
}

1 个答案:

答案 0 :(得分:1)

您必须相对于要旋转的点生成多边形。

以下是您需要做的事情:

  • 创建与点(0,0)
  • 相关的多边形
  • 将身体正好放在红点的中心

轮换应该按照你想要的方式工作。