基本的3D OpenGL碰撞检测C ++

时间:2016-11-20 13:36:07

标签: c++ 3d collision-detection

我目前正在使用C ++开发一个非常基本的3D OpenGL游戏,作为小型大学项目的一部分。然而,我们并没有从老师那里得到很多见解,只有非常有限的文档,以及一个小的时间框架,所以我现在有点迷失。

我的游戏是在正交平面上的坦克战,几乎看起来就像我在下面描绘的图像。每个坦克(A和B)都可以由不同的玩家控制,并且每个坦克都可以射击射弹,这些射弹应该在碰撞时影响其他坦克的得分。

enter image description here

我的问题是,有效实施坦克碰撞的最简单方法是什么? (坦克与坦克,坦克与地图边界和坦克对比任何类型的平行六面体物体,如图中心的那个 - 同样的东西,但适用于从坦克炮塔射击的射弹)。

理想情况下,无需使用外部物理引擎,但如果可以轻松完成实现,也可以接受。目前,我只使用GLUT库。

1 个答案:

答案 0 :(得分:2)

将Box2D(http://box2d.org)下载并集成到您的项目中。

除非你的项目是要实现一个物理引擎,否则不要自己去做。花在学习如何集成库以及适当的物理引擎如何工作上的时间会更好。

然后你可以轻松地为你的坦克使用一个盒式对撞机,为弹丸使用圆形,为你的周边使用4条线。您可以创建回调以在弹丸与另一个坦克相撞时通知您。

你必须使用力和扭矩来移动和旋转坦克,而不是仅仅更新它们的位置。但是如果你打算自己实现物理,你可能不得不这样做。