2014-02-06 91 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 

如何更改該常數?

,我發現這個文件https://github.com/libgdx/libgdx/blob/master/gdx/jni/Box2D/Common/b2Settings.h

在這裏,我看到了

#define b2_maxPolygonVertices 8 

我怎樣才能改變它libGDX?

回答

7

其實你不應該改變它,因爲它會降低性能。

你會做什麼,而不是創建一個Body與幾個Fixtures。這些固定裝置將具有最多8個頂點並將共享一些頂點,因此您將使用粘在一起的較小部分來模擬較大的一個頂點。

這被稱爲多邊形分解。當您導出場景時,Box2D的一些編輯會自動爲您執行此操作。可能Box2D的最佳編輯器有R.U.B.E.。還有一個用於rube場景的libgdx加載程序here

如果你以編程方式創建它們,你可能必須自己做。也許像EarClippingTriangulator這樣的LibGDX工具可以幫助你。

+0

好吧,讓我們說我有一個頂點浮點數組,有超過8個點,我怎樣才能使用earclippingtriangulator? –

+0

我的代碼http://pastebin.com/L7wjqHbt。我應該如何使用它? –

+0

它三角形你的多邊形。你得到的數組是一個三角形索引的數組。你會分別拿3個並構造一個新的Fixture。這意味着'array [sa.get(0)]','array [sa.get(1)]','array [sa.get(2)]'將成爲您用於新三角函數之一的頂點燈具。 – noone