我快速搜索了OpenGl的碰撞检测,但大多数事情都是使用CGRectIntersectsRect返回2D示例。我是否使用CGRectIntersectsRect进行3D检测?我正在制作一个基本的3D迷宫游戏,我只想阻止人们穿过墙壁,这些墙壁只是正方形(由三角形构成)而不是导入的物体(是的,我是新手)。
谢谢,西蒙
答案 0 :(得分:5)
你会挣扎。
考虑使用 Unity3D ,这样您就可以访问 nVidia physX ,这是您想要的3D物理解决方案的类型。
相反,从头开始这个! http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.4.5881&rep=rep1&type=pdf
相反,成为此类 http://www.ode.org/的专家,然后您可以将其与OpenGL,http://www.ogre3d.org/about/features等一起使用。
以下是关于“图像”的评论的重要说明:
图像与碰撞检测完全无关。 OpenGL与碰撞检测或任何类型的物理无论如何都没有任何关系。图像与碰撞检测完全没有任何联系。 OpenGL和冲突之间没有连接,零。绝对没有。
答案 1 :(得分:2)
OpenGL是一个纯可视化库,不提供任何碰撞检测。您必须自己动手或使用第三方碰撞检测库。
函数CGRectIntersectsRect
看起来像来自Cocos库,并在矩形之间进行2D碰撞检测。如果您游戏中的实际游戏玩法仅限于2D,则此功能可能就是您所需要的,但如果玩家在三维空间中移动则不够。
答案 2 :(得分:0)
OpenGL不进行碰撞检测,至少不是故意的。您可以使用某些功能进行精灵碰撞检测,但我不确定这是否适用于iPhone上最新的OpenGL ES。
CGRectIntersectsRect
来自Core Graphics,这是一个简单的信封检查,可以避免在显然不需要时进行更精确和昂贵的检查。它只适用于2D。
3D中的碰撞很棘手。也许你可以先将头像投射到地板上并检查生成的多边形(甚至是一个矩形)是否与墙线碰撞?听起来更容易。