2016-11-20 231 views
1

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

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

enter image description here

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

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

回答

2

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

除非你的项目是实现一个物理引擎,否则不要自己动手做。学习如何整合图书馆以及适当的物理引擎是如何工作的,你的时间会好得多。

然后你可以很容易地使用箱子对撞机为你的坦克,圆形的射弹和4线为你的周界。当抛射物与另一个坦克相撞时,您可以创建回调来通知您。

你将不得不使用力量和力矩来移动和旋转你​​的坦克,而不是只更新他们的位置。但是如果你要自己实现物理学,你可能必须这样做。