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