Конструкторы разностных коробок2d SetAsBox

#c #opengl #box2d

Вопрос:

Я создаю игру в Box2D, в которой мяч должен достичь определенной точки. После этого он перейдет на следующий уровень. Для конечной точки я хочу создать небольшой прямоугольник в определенной позиции. Для этого я использую следующий код:

 b2BodyDef end_point_def; end_point_def.position.Set(4.0f, 3.5f); b2Body *end_body = world-gt;CreateBody(amp;end_point_def); b2PolygonShape end_point; end_point.SetAsBox(1.0f, 1.0f); end_body-gt;CreateFixture(amp;end_point, 0.0f)  

Здесь прямоугольник взаимодействует с мячом, и функция b2TestOverlap() работает, и он переходит на следующий уровень. Однако конечная точка нарисована на (0,0), поэтому прямоугольник нарисован не в том месте.

Чтобы исправить это, я изменил следующее:

 end_point.SetAsBox(0.5f, 0.5f, end_point_def.position, 0.0f);  

Теперь прямоугольник нарисован в нужном месте, но мяч проходит прямо через него. b2TestOverlap тоже больше не работает.

Я использую OpenGL для рисования с объектами буферов вершин и GL_TRIANGLE_FAN.

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