我正在使用多边形进行碰撞检测。现在我正在尝试做一些更复杂的碰撞,为此我需要将每个多边形顶点作为Vector2。我通过网络搜索过,我唯一能找到的就是PolygonBody(Get vertice list of a polygon shape body)
我只能在libgdx API中找到有用的方法是getTransformedVertices()和area(),但我不知道如何处理这些数据。
有什么想法吗?
答案 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(它取决于网格属性)。