2014-11-23 6 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

+0

Вы уже использовали этот многоугольник? –

+0

Шансы на то, что код работает на 50%, и единственное, что я меняю, - это координаты. Например, [(0,0), (1,1), (2,5)] работает, но [(0,0), (1,1), (2,3)] этого не делает. – user1176999

ответ

3

Вершины (0,0), (1,1), (2,2) все находятся в прямой линии - они не образуют многоугольник , Это приводит к срабатыванию утверждения, как показано в сообщении об ошибке (b2PolygonShape.cpp, строка 223)