2010-11-15 174 views
2

我为OpenGl做了一次碰撞检测的快速搜索,但大多数情况下使用CGRectIntersectsRect回来了2D示例。我是否使用CGRectIntersectsRect进行3D检测?我正在做一个基本的3D迷宫游戏,我只是想阻止人们走过只是方形(由三角形)而不是导入对象的墙壁(是的,我是新手)。OpenGL 3D碰撞检测

谢谢,西蒙

+0

更新:我实际上编写了自己的简单碰撞例程:) – Burf2000 2010-11-15 22:11:06

回答

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和碰撞之间没有连接,为零。绝对没有。

+0

感谢您的信息,由于费用原因,我不再使用Unity和SIO2 2.0,这对我来说是一个学习项目。我会检查你的链接:) – Burf2000 2010-11-15 15:05:31

2

OpenGL是一个纯粹的可视化库,并且不提供任何碰撞检测。你必须自己推出或使用第三方碰撞检测库。

函数CGRectIntersectsRect看起来像它来自Cocos库,并执行矩形之间的2D碰撞检测。如果游戏中的实际游戏限于2D,则此功能可能是您所需要的全部功能,但如果玩家在三维中移动,则不足以实现此功能。

+0

玩家只能前进/后退和旋转等等,所以没有Y访问移动。那么这个工作有很好的机会吗? – Burf2000 2010-11-15 15:07:13

+0

如果只旋转90度角,则可以使用具有X和Z坐标的矩形的'CGRectIntersectsRect'。否则,忘记它。 – Zecc 2010-11-15 15:54:03

+0

如果我理解正确,则需要绘制单独的图像来进行碰撞检测:只使用3D显示窗口将无法工作。在任何情况下,尝试使用OpenGL进行碰撞检测都是一种破解 - 这不是它的设计目的,所以它最多只会是尴尬和脆弱的。 – comingstorm 2010-11-15 18:30:05

0
  1. OpenGL不会做碰撞检测,至少不是故意的。您可以使用某些功能来执行精灵碰撞检测,但我不确定这是否适用于iPhone上的最新OpenGL ES。

  2. CGRectIntersectsRect来自Core Graphics,它是一个简单的信封检查,可以避免在明显不需要时进行更精确和更昂贵的检查。它只适用于2D。

  3. 3D中的碰撞很棘手。也许你可以先将头像投影到地板上,然后检查生成的多边形(甚至矩形)是否与墙线发生碰撞?听起来更容易。