Зеркальное тело, построенное с вершинами в box2d и libgdx - PullRequest
0 голосов
/ 28 февраля 2012

Как я могу отразить фиксацию тела по одной оси (x или y), потому что, когда я хочу отразить его только по одной, возникает ошибка утверждения, но когда я отражаю его по двум осям, никаких проблем не возникает.

public Vector2[][] getPolygons(String bodyName, float scaleX, float scaleY)
{
    Vector2[][] vectors = null;

    Element fixture;
    Element semiPolygon;
    float auxX, auxY;

    this.element = reader.parse(xml);
    fixture = this.element.getChildByName(bodyName);

    vectors = new Vector2[fixture.getChildCount()][]; 
    for(int child = 0; child < fixture.getChildCount(); child++)
    {
        semiPolygon = fixture.getChild(child);
        vectors[child] = new Vector2[semiPolygon.getChildCount()];
        for(int part = 0; part < semiPolygon.getChildCount(); part++)
        {
            auxX = semiPolygon.getChild(part).getFloatAttribute("x")*-scaleX;
            auxY = semiPolygon.getChild(part).getFloatAttribute("y")*-scaleY;
            vectors[child][part] = World.toGameCoordinates(auxX, auxY);
        }
    }

    return vectors;
}

1 Ответ

1 голос
/ 01 марта 2012

Вершины многоугольника должны быть указаны в направлении против часовой стрелки. Каждый раз, когда фигура зеркально отражается, порядок намотки меняется на противоположный, поэтому при наличии только одного зеркала порядок будет обратным, тогда, если вы снова отразите его, все будет хорошо, как вы обнаружили. Поэтому, если вы зеркально отражаете только одну ось, вам нужно изменить порядок вершин.

...