Завъртете многоъгълно тяло box2d, като запазите първоначалната позиция

Изображението по-долу илюстрира това, което се опитвам да направя. Многоъгълното тяло трябва да се върти, запазвайки първоначалната си позиция, а червената точка, която също може да бъде друго тяло, остава в центъра.

въведете описание на изображението тук

Ето какво опитах, но се движи нещо като около червената точка:

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

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