碰撞算法一般在很多物理引擎里面都能看到其身影
物理引擎
物理引擎都有基本的 碰撞,刚体,重力等基本功能
如
PhysX: unity引擎和ue4引擎使用
Havok: Frostbite(寒霜) 引擎使用 还有大名鼎鼎的<<塞尔达荒野之息>> 也是使用的这个
Box2D: cocos 2D引擎使用 愤怒的小鸟使用
Chipmunk: cocos 2d引擎使用
其中physx 和havok为3D物理引擎. 更有很多复杂功能 水(流体),爆炸模拟(粒子),衣服布料模拟(软体)等等.
碰撞体
如 我们游戏开发目前使用最多的unity使用的physx
physx中的碰撞体collider
1. box collider
2. Sphere collider
3. Capsule collider
4. Mesh collider除了meshCollider 是不规则的形状 来判断碰撞,同时为了性能 物理引擎也本身限制了 mesh collider不超过200个面其他几个 collider都很好理解
碰撞原理
言归正传说到碰撞算法 以上介绍的物理引擎 其实都是开源的 可以下载源码看到里面的内部实现. 可以看到各种引擎的碰撞算法几乎都是一致的.
无非就是把物理放入各种包围盒, 再判断包围盒的范围判断出碰撞
包围盒种类
1. AABB包围盒
2. sphere包围球
3. obb方向包围盒
4. fdh固定方向凸包
aabb包围盒检查碰撞