我的身体只有一个固定装置。附加到夹具的形状是PolygonShape。为了渲染主体,我需要访问它的顶点坐标。
这就是我的尝试:
Vector2 tmpVector = new Vector2();
Fixture f = body.getFixtureList().get(0);
PolygonShape shape = (PolygonShape)f.getShape();
shape.getVertex(3, tmpVector);
shape.getVertex(2, tmpVector);
shape.getVertex(1, tmpVector);
shape.getVertex(0, tmpVector);
当身体不与其他身体接触时,它会起作用。
问题是,当身体与另一个身体碰撞时,getFixtureList
会返回多个夹具,这包括来自其他身体的夹具。
如何解决这个问题?
我需要做的就是动态访问多边形体的顶点位置。
答案 0 :(得分:1)
您可以使用body
方法检查灯具的正文是否等于getBody()
:
Vector2 tmpVector = new Vector2();
Fixture f = body.getFixtureList().get(0);
while (f.getBody() != body)
{
f = f.getNext();
}
if (f != null)
{
PolygonShape shape = (PolygonShape)f.getShape();
// get vertices
}
当然,只有当你知道body
只有一个具有多边形形状的夹具时,这项工作才有效,正如问题所述。否则,您可以考虑使用userData
属性来存储有关不同灯具的信息。