镜像体在box2d和libgdx中使用顶点构建

时间:2012-02-28 19:02:33

标签: java libgdx box2d mirroring

如何在一个轴(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 个答案:

答案 0 :(得分:1)

必须以逆时针顺序指定多边形顶点。每次镜像形状时,绕线顺序都是相反的,所以只有一个镜像顺序会向后,如果你再镜像它就会没问题,就像你发现的那样。因此,如果您只镜像一个轴,则需要反转顶点的顺序。