在您看来,描述用于2D环境中碰撞检测的算法或技术的最佳资源(书籍或网页)是什么?
我只是渴望学习不同的技术来制作更复杂和高效的游戏。…
发布于 2008-09-18 00:32:31
冲突检测通常是一个两阶段的过程。某种“宽相位”算法,用于确定两个对象是否有重叠的机会(试图避免n^2比较),然后是“窄相位”碰撞检测算法,该算法基于应用程序的几何要求。
Sweep and Prune是一种成熟的高效宽相位算法(具有少量变体,可能适合也可能不适合您的应用程序),适用于经历相对物理运动的对象(快速移动的物体,或者大小和边界区域差异很大的物体可能会使其不适合)。Bullet库有一个3d实现供参考。
窄相位冲突通常可以像“CircleIntersectCircle”一样简单。同样,Bullet库有很好的参考实现。在3d领域,当需要对任意对象进行更精确的检测时,GJK是目前最好的工具之一--据我所知,没有什么能阻止它适应2d (但它最终可能比蛮横地强迫你所有的边缘更慢;)
最后,在进行碰撞检测之后,通常需要某种类型的碰撞响应。对于物理响应解决方案,Box 2d是一个很好的起点。
发布于 2008-08-27 20:24:58
就我个人而言,我喜欢Paul Bourke的工作。
此外,Paul Nettle曾经写过这个主题。他有一个完整的3D碰撞检测库,但您可能对这些库背后的想法更感兴趣(这些库非常适用于2D)。有关这一点,请参阅General Collision Detection for Games Using Ellipsoids。
发布于 2008-08-31 00:52:43
Metanet Software已经发布了some relevant tutorials。Metanet开发了N (基于闪存,适用于Windows、Mac、Linux)和N+ (适用于X360、DS和PSP)。
https://stackoverflow.com/questions/31158
复制相似问题