2014-11-23 144 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行)所示