首页 > 解决方案 > Box2D SetAsBox 构造函数的区别

问题描述

我在 Box2D 中制作游戏,球必须达到某个点。之后,它将继续到下一个级别。对于终点,我想在某个位置创建一个小矩形。为此,我使用以下代码:

b2BodyDef end_point_def;
end_point_def.position.Set(4.0f, 3.5f);
b2Body *end_body = world->CreateBody(&end_point_def);
b2PolygonShape end_point;
end_point.SetAsBox(1.0f, 1.0f);
end_body->CreateFixture(&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。

我该如何解决这个问题?

标签: c++openglbox2d

解决方案


推荐阅读