如何从多边形中获取顶点

时间:2014-11-16 07:12:27

标签: libgdx

我正在使用多边形进行碰撞检测。现在我正在尝试做一些更复杂的碰撞,为此我需要将每个多边形顶点作为Vector2。我通过网络搜索过,我唯一能找到的就是PolygonBody(Get vertice list of a polygon shape body

我只能在libgdx API中找到有用的方法是getTransformedVertices()和area(),但我不知道如何处理这些数据。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您的意思是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;
}

网格的解决方案是完全相同的,除非您应该为每个顶点提取一些额外的魔法提取x和y(它取决于网格属性)。