Как получить координаты Box2D Polygon?

1

У меня есть тело с одним креплением, прикрепленным к нему. Форма, прикрепленная к светильнику, представляет собой 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 возвращает более одного инструмента, и это включает в себя те, что из других тел.

Как решить эту проблему?

Все, что мне нужно, это получить доступ к положениям вершин тела многоугольника на лету.

Теги:
libgdx
box2d

1 ответ

1

Вы можете проверить, совпадает ли body прибора с 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 для хранения информации о различных светильниках.

  • 0
    Благодарю. но это правильный способ получить координаты тела многоугольника?
  • 1
    Я не знаком с портом Java Box2D, и в C ++ getFIxtureList никогда не возвращает приспособление, которое не прикреплено к телу. Я знаю, что этот кусок кода может выглядеть как трюк, но он работает, и если то, что вы говорите, правда, я думаю, что это два единственных способа получить правильное приспособление.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню