Вы можете перебирать приборы в теле следующим образом:
for (b2Fixture* f = body->GetFixtureList(); f; f = f->GetNext())
{
....
}
После того, как у вас есть прибор, вам нужно проверить, какая у него форма, а затем привести его к этому типу, чтобы получить доступ кданные формы:
b2Shape::Type shapeType = fixture->GetType();
if ( shapeType == b2Shape::e_circle )
{
b2CircleShape* circleShape = (b2CircleShape*)fixture->GetShape();
...
}
else if ( shapeType == b2Shape::e_polygon )
{
b2PolygonShape* polygonShape = (b2PolygonShape*)fixture->GetShape();
....
}
Используйте GetVertexCount () и GetVertex (), чтобы получить вершины из многоугольника.
Обратите внимание, что позиции вершин, сохраненные в осветителе, находятся в координатах тела (относительнотело, к которому прикреплен прибор).Чтобы получить местоположения в мировых координатах, вам нужно умножить на преобразование тела:
b2Vec2 worldPos = body->GetWorldPoint( localPos );