Libgdx 如何从多边形中获取顶点

Libgdx 如何从多边形中获取顶点,libgdx,Libgdx,我正在使用多边形进行碰撞检测。现在我正在尝试进行更复杂的碰撞,为此,我需要将每个多边形顶点作为向量2。我在网上搜索过,唯一能找到的就是PolygonBody() 我能在libgdxapi中找到的唯一有用的方法是getTransformerAdverties()和area(),但我不知道如何处理这些数据 有什么想法吗?你是指com.badlogic.gdx.math.Polygon谈论多边形还是将网格用作多边形 在第一种情况下,您可以这样做: Array<Vector2> getPol

我正在使用多边形进行碰撞检测。现在我正在尝试进行更复杂的碰撞,为此,我需要将每个多边形顶点作为向量2。我在网上搜索过,唯一能找到的就是PolygonBody()

我能在libgdxapi中找到的唯一有用的方法是getTransformerAdverties()和area(),但我不知道如何处理这些数据


有什么想法吗?

你是指
com.badlogic.gdx.math.Polygon
谈论多边形还是将网格用作多边形

在第一种情况下,您可以这样做:

Array<Vector2> getPolygonVertices(Polygon polygon) {
    float[] vertices = polygon.getTransformedVertices();

    Array<Vector2> result = new Array<>();
    for (int i = 0; i < vertices.length/2; i++) {
        float x = vertices[i * 2];
        float y = vertices[i * 2 + 1];
        result.add(new Vector2(x, y));
    }
    return result;
}
数组GetPolygon顶点(多边形){
float[]顶点=多边形。getTransformedAdverties();
数组结果=新数组();
对于(int i=0;i

网格的解决方案基本相同,只是您应该为每个顶点提取x和y(这取决于网格属性)。

欢迎使用!我建议你在向量上做一些池优化,以防你需要频繁调用这样的方法。我已经做过了。我创建了带有浮点数的ArrayList,而不是Vectors,这样就避免了对Vector2的强制转换。但这甚至无关紧要,因为命中测试在10秒内发生的次数不超过2次,并且在大多数2个多边形上发生。