#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.
Как я могу решить эту проблему?