2

このコードで予期しないArrayIndexOutOfBoundsExceptionが発生します。誰か助けてもらえますか?

次のように2つのポリゴンを作成します。

float[]vertice={.1f, 2.7f, .4f, 4.3f, 3.4f, 5.3f, 5.6f, 3.3f, 3.3f, .1f};
Polygon oPolygon1=new Polygon(vertice);

float[]vertice2={.2f,1.3f,1.9f,4.5f,4.1f,1.3f};
Polygon oPolygon2=new Polygon(vertice2);

そして、次のように位置を更新します。

oPolygon1.setPosition(x1,y1);
oPolygon2.setPosition(x2,y2);

しかし、私がIntersectorそれらが重なっているかどうかを確認するために使用しようとすると...

if(Intersector.overlapConvexPolygons( oPolygon1, oPolygon2)){
   //do something
}

...次のエラーが発生します:

スレッド「LWJGLアプリケーション」の例外java.lang.ArrayIndexOutOfBoundsException:

Intersector:内のこのコードブロック内

// projection axis is perpendicular to potential separation axis edge i->j
float projX = verts1[j + 1] - verts1[i + 1];
float projY = verts1[i] - verts1[j];
4

1 に答える 1

4

これはLibGDXのバグのようです。行設定projXでは、インデックスをラップする必要があります

float projX = verts1[(j + 1) % length1] - verts1[i + 1];

これはSVNで修正されます。

于 2012-07-06T21:04:36.927 に答える