2012-02-28 9 views
0

ボディのフィクスチャを1つの軸(xまたはy)でミラーリングするには、アサーションエラーが発生しますが、それは2つの軸で問題は発生しません。box2dとlibgdxの頂点で構築されたミラーボディ

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

so ...アサーションはどこで発生しますか? – iforce2d

答えて

1

ポリゴンの頂点は、反時計回りの順序で指定する必要があります。シェイプがミラーリングされるたびに巻線順序が逆になります。したがって、1つのミラーで順序が逆になります。それを再度ミラーリングすると、検出されたとおりにOKになります。したがって、1つの軸だけを鏡映する場合は、頂点の順序を逆にする必要があります。

+0

Thnaks that :) –

関連する問題