2 iphone 2d opengl-es collision-detection rotation
这可能是一个更普遍的opengl问题.使用OpenGL ES 2d,并阅读教程,我学会了如何进行基本的矩阵变换,如在屏幕上旋转和移动对象.到目前为止,这么好 - 我有一些物体四处移动和旋转.
我的下一步是进行碰撞检测.像检查边界框之间的交叉点这样简单的东西可能没问题.但是,我被困住了,因为为了知道边界框何时相交,我必须知道我的对象的平移,旋转坐标.但我找不到从OpenGL获取这些数字的方法.
所以我真的必须自己做旋转和变换,除了让OpenGL做它们,只是为了获得翻译的坐标?或者是否有某种方法将当前矩阵应用于顶点并获得结果?OpenGL不能比我快得多吗?
感谢您的帮助,我希望得到一些关于如何做这种事情的一般性建议.
视觉信息和碰撞信息通常在游戏中单独处理.请注意,您应该重复使用物理代码中的所有变换信息(即所有矩阵),而不是顶点信息.它起初听起来有点低效且反直觉.
其中一个原因是需要以多边形精度进行碰撞检测是不常见的.相反,近似的数量通常就足够了.
所以你很少会碰到一组多边形和另一组多边形 - 实际上你应该尽力而为.你应该在自己,盒子,线条或"扫过"球体(胶囊)上碰撞球体.较大的非凸模型可以分解为多个凸体并单独处理.
因此,如果您直接使用可视化网格进行碰撞,则物理代码将比使用较低细节的网格要慢得多,或者像球体或方框那样使用近似体积.这有点痛苦,但碰撞的缓慢部分不是变换,而是实际检测 - 所以这种方法实际上更快.
根据你的游戏,我会考虑尽可能多地使用球体 - 它们不需要旋转,测试也很容易.在几何体消失到GPU平台之前,在模型加载时也很容易生成边界球体.