c++ - 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。
我该如何解决这个问题?
解决方案
推荐阅读
- windows - Windows 路径的类 UNIX 方式?
- java - 线程上的 JavaFX 关闭对话框
- c# - 如何将所选文本的开始和结束索引转换为精确的 TextRange?
- angular - Angular 5:如何动态设置元素属性值...无法绑定到“parent_id”,因为它不是
- javascript - 使用For循环返回数组中可被3整除的数字?
- c++ - 纹理不绘制 OpenGL
- openshift - Openshift 部署——fabric8 或模板
- c++ - 为什么这个正则表达式会“冻结”VC++ 中的程序?
- c# - ToList 方法不显示
- node.js - 非阻塞 I/O 如何与通道一起使用