Повернуть тело полигона box2d, сохраняя исходное положение

Изображение ниже иллюстрирует то, что я пытаюсь сделать. Тело многоугольника должно вращаться, сохраняя исходное положение, а красная точка, которая также может быть другим телом, остается в центре.

введите здесь описание изображения

Вот что я пробовал, однако он перемещается примерно как вокруг красной точки:

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

person Devester    schedule 02.06.2014    source источник
comment
Чтобы это работало, вам нужно определить точки фигур многоугольника по отношению к центру красной точки. Не могли бы вы опубликовать код, который создает тело?   -  person Dennis Korbar    schedule 03.06.2014
comment
Спасибо @DennisKorbar за внимание к этому. Я обновил пост. Для создания вершин я использую Physics Body Editor от Aurilien.   -  person Devester    schedule 03.06.2014
comment
К сожалению, я не знаю об этом редакторе. Включает ли этот файл координаты полигона? Что вам в основном нужно сделать, так это убедиться, что координаты относятся к точке (0,0). А затем расположите тело точно на красном круге.   -  person Dennis Korbar    schedule 03.06.2014
comment
@DennisKorbar Да, редактор генерирует координаты, и их можно генерировать относительно точки. Спасибо, что указали на эту возможность, теперь она работает, как и ожидалось. Если вы хотите бросить ответ, и я могу принять его...   -  person Devester    schedule 04.06.2014
comment
Здорово! Информацию из комментариев я сформулировал как ответ.   -  person Dennis Korbar    schedule 04.06.2014


Ответы (1)


Вы должны генерировать полигоны относительно точки, вокруг которой вы хотите вращаться.

Вот что вам нужно сделать:

  • Создайте полигоны относительно точки (0,0)
  • Поместите тело точно в центр красной точки

Вращение должно работать так, как вы этого хотите.

person Dennis Korbar    schedule 03.06.2014