2D游戏凸多边形碰撞检测,分离轴定理算法源码

阅读更多

更新:修改了一个严重bug(算法错误),增加了多边形和圆形碰撞,增加了正矩形和圆形碰撞

 

应用场景:2D游戏凸多边形碰撞,比像素碰撞精确度低点,比方框碰精确度要高。

 

限制条件:2D。不能用于凹多边形,凹多边形得拆分成凸多边形或者三角形来做。运动速度很快了会有穿越效果。不带任何物理,如果需要反弹等等物理效果,就必须上物理引擎了。

 

最佳实践:最好能用盒子先检测一下然后再用分离轴来做碰撞碰撞。否则屏幕上精灵一多还是挺费电的。

 

参考文档

http://www.codeproject.com/KB/GDI-plus/PolygonCollision.aspx

 

参考文档中的代码是ActionScript的,我移植成C99的,附件的包是Xcode项目,不过C源代码可以单提出来用于任何支持C的设备

 

 

C99标准里只有_Bool,没有bool,需要包含头文件才可以用bool, true, false,没包含前的编译错误弄得我莫名其妙的

 

还有大家直接用的话最好先充分测试。这个代码写好了只测试了几个例子。如果有命名冲突,得自己搞定,呵呵。

 

  • CollisionDetection.zip (19.5 KB)
  • 下载次数: 262

你可能感兴趣的:(游戏,算法,Xcode,ActionScript,C)