2014-11-23 111 views
1

这怎么会正常工作:Box2D的libgdx多边形

Vector2[] vertexArray = new Vector2[3]; 
vertexArray[0] = new Vector2(0f, 0f); 
vertexArray[1] = new Vector2(1f, 1f); 
vertexArray[2] = new Vector2(2f, 5f); 

polygonShape.set(vertexArray); 

,这给出了一个运行时错误

Vector2[] vertexArray = new Vector2[3]; 
vertexArray[0] = new Vector2(0f, 0f); 
vertexArray[1] = new Vector2(1f, 1f); 
vertexArray[2] = new Vector2(2f, 2f); 

polygonShape.set(vertexArray); 

错误:

AL lib: (EE) alc_cleanup: 1 device not closed 
Assertion failed! 

Program: C:\Program Files\Java\jre1.8.0_25\bin\javaw.exe 
File: /var/lib/jenkins/workspace/libgdx/extensions/gdx-box2d/gdx-box2d/jni/Box2D/Collision/Shapes/b2PolygonShape.cpp, Line 223 

Expression: false 

它没有任何意义。第一个代码工作正常,三角形绘制,但第二个代码没有。有人可以解释我做错了什么...

+0

此错误是在所有程序运行中发生,还是一次性异常? – dreamsComeTrue 2014-11-23 18:35:59

+0

你已经使用过那个多边形了吗? – 2014-11-23 18:39:36

+0

代码工作的几率是50%,而我正在改变的唯一东西就是坐标。例如,[(0,0),(1,1),(2,5)]确实有效,但[(0,0),(1,1),(2,3)]不会。 – user1176999 2014-11-23 23:56:26

回答

3

顶点(0,0),(1,1),(2,2)都在一条直线上 - 它们不会形成多边形。这会导致触发断言,如错误消息(b2PolygonShape.cpp,第223行)所示