2014-02-06 4 views
6

나는 꼭지점이 8 개 이상인 몸체를 만들어야하는데 오류가 발생합니다.LibGDX BOX2D 변경 maxPolygonVertices

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

Program: C:\Program Files\Java\jre7\bin\javaw.exe 
File: /var/lib/jenkins/workspace/libgdx/gdx/jni/Box2D/Collision/Shapes/b2PolygonShape.cpp, Line 122 

Expression: 3 <= count && count <= 8 

어떻게이 상수를 변경할 수 있습니까?

나는 내가 libGDX에서 어떻게 바꾸

#define b2_maxPolygonVertices 8 

을 보았다이 파일 여기 https://github.com/libgdx/libgdx/blob/master/gdx/jni/Box2D/Common/b2Settings.h

발견?

답변

7

실제로 성능을 저하시킬 수 있으므로 변경하면 안됩니다.

대신에 FixturesBody을 만들면됩니다. 이러한 픽스처는 최대 8 개의 정점을 가지며 일부 정점을 공유하므로 서로 붙어있는 작은 부분을 사용하여 더 큰 부분을 시뮬레이션합니다.

이것을 폴리곤 분해라고합니다. Box2D의 일부 편집자는 장면을 내보낼 때 자동으로 처리합니다. Box2D에 가장 적합한 편집기가 있다고 가정하면 R.U.B.E.입니다. 또한 루브 장면을위한 libgdx 로더가 here입니다.

프로그래밍 방식으로 만들면 아마도 직접해야 할 것입니다. EarClippingTriangulator과 같은 일부 LibGDX 도구를 사용하면 도움이 될 수 있습니다.

+0

그래, 내가 8 점 이상이있는 vertex의 float 배열을 가지고 있다고 가정 해 봅시다. 어떻게 earclippingtriangulator를 사용할 수 있습니까? –

+0

내 코드 http://pastebin.com/L7wjqHbt. 어떻게 사용해야합니까? –

+0

그것은 다각형을 삼각형 화합니다. 당신이 얻는 배열은 삼각형의 인덱스를 가진 배열입니다. 당신은 각각 3을 가지고 그것의 새로운 조명기를 만들 것입니다. 즉, 배열 [sa.get (0)], 배열 [sa.get (1)], 배열 [sa.get (2)]는 새 삼중 관절 중 하나에 사용할 정점이됩니다. 비품. – noone