【问题标题】:LibGDX BOX2D change maxPolygonVerticesLibGDX BOX2D 更改 maxPolygonVertices
【发布时间】:2014-03-03 14:41:41
【问题描述】:

我需要制作一个超过 8 个顶点的实体,我得到了错误。

   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 更改它?

【问题讨论】:

    标签: libgdx box2d vertices


    【解决方案1】:

    实际上你不应该改变它,因为它会降低性能。

    您要做的是创建一个带有多个FixturesBody。这些灯具最多有 8 个顶点,并且会共享一些顶点,因此您将使用粘在一起的较小部件来模拟较大的部件。

    这称为多边形分解。当您导出场景时,一些 Box2D 的编辑器会自动为您执行此操作。可能最好的 Box2D 编辑器是 R.U.B.E.。还有一个用于 rube 场景的 libgdx 加载器here

    如果您以编程方式创建它们,您可能必须自己执行此操作。也许像 EarClippingTriangulator 这样的一些 LibGDX 工具可以在这里为您提供帮助。

    【讨论】:

    • 好吧,假设我有一个浮点数组,它有超过 8 个点,我该如何使用 earclippingtriangulator?
    • 它对你的多边形进行三角测量。你得到的数组是一个带有三角形索引的数组。您将每个取 3 个并构建一个新的夹具。这意味着array[sa.get(0)]array[sa.get(1)]array[sa.get(2)] 将是您将用于新的三角形装置之一的顶点。
    • 但是,一个三角形有 3 个点,x1 y1 x2 y2 x3 y3,只有 3 个浮点值如何工作?我需要 6 ..我没有用 vector2 数组给出点数,我用 float[] 数组做的,就像 [x1 , y1, x2, y2.....xn,yn] ......我得到错误表达式: 3
    • Ops 我发现短数组中的值是vector2数组的索引,我还从float数组创建了一个vector2数组,这很有效,谢谢!跨度>
    • 一开始我并没有意识到输入是一个浮点数组,而不仅仅是顶点,只是要解释一下。很高兴它成功了:)
    猜你喜欢
    • 1970-01-01
    • 2014-07-02
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    相关资源
    最近更新 更多