2016-09-19 7 views
0
game.batch.begin(); 
for (Array obstacle_array123: obstacle_array) { 
    body = obstacle_array123; 
    for (Body bodies: body) { 
     if (bodies.getUserData() instanceof Array && bodies.isActive()) { 
      sprites_array = (Array)bodies.getUserData(); 
      for (int fix_pos = 0; fix_pos < sprites_array.size; fix_pos++) { 
       sprite = sprites_array.get(fix_pos); 
       if (verts.size != 0) verts.removeRange(0, verts.size - 1); 
       f = bodies.getFixtureList().get(fix_pos); 
       s = (PolygonShape)f.getShape(); 
       transform = bodies.getTransform(); 

       for (int i = 0; i < s.getVertexCount(); i++) 
       { 
        s.getVertex(i, tmp); 
        transform.mul(tmp); 
        verts.add(new Vector2(tmp)); 
       } 
       rotation_point.set((verts.get(0).x + verts.get(1).x + verts.get(2).x + verts.get(3).x)/4, (verts.get(0).y + verts.get(1).y + verts.get(2).y + verts.get(3).y)/4); 

       sprite.setPosition(rotation_point.x - sprite.getWidth()/2, rotation_point.y - sprite.getHeight()/2); 
       sprite.setRotation(bodies.getAngle() * MathUtils.radiansToDegrees); 
       sprite.draw(game.batch); 
      } 
     } 
    } 
} 
game.batch.end(); 

私の体は複数の正方形の什器で作られていますので、これは各正方形の儀式に各正方形のスプライトを描画するコードです。Vector2はオフです - libgdx/java

2の問題 - 1.st - >それは唯一の配列
2.ndの最初のスプライトレンダリング - あなたは、次のループ(解決しよう)を見れば>を

for (int i = 0; i < s.getVertexCount(); i++) 
{ 
    s.getVertex(i, tmp); 
    transform.mul(tmp); 
    verts.add(new Vector2(tmp)); 
} 

もそれがあります

for (int i = 0; i < s.getVertexCount(); i++) 
{ 
    s.getVertex(i, tmp); 
    transform.mul(tmp); 
    verts.add(tmp); 
} 

に比べて第2の例で生成された座標は、半値幅と正方形の半分の高さのために間違ったapperantly異なっています。

両方の例からコーディネートしてみると、数字は同じですが、スプライトの位置を設定すると、2番目の例がオフになります。

+0

sprites_arrayのサイズは? – IronMonkey

+0

[OK]を押すと、エラーが発生しました。これは、タイプミスのようになりました。for(int z = 0; i <1; i ++)、それは0を投げ続けていた理由です。 –

答えて

1

あなたはたぶん両方の質問を別々に尋ねるべきですが、2番目の質問に答えるには、違います。

最初に、Vector2vertsをループで追加します。したがって、vertsは別のVector2の負荷を保持することになります。それだけで(Javaが参照渡しであることを覚えている)何度も何度も同じ値を持つ1 Vector2を持つことになりますので、あなたは、何度も何度もvertsに同じVector2を追加秒1で

警告 - 私の答えvertsは、標準的なコレクションまたはlibgdx Arrayのいくつかの並べ替えであることを前提としています。

+0

私はゲームを作成しているので、レンダリングループでNEWを使いたくないので、tmp値の配列を作成しなければならないようです –

関連する問題