最近开发小游戏需要一个简单的碰撞检测,因为用的是自定义的Rect类,虽然这个判断方法很简单,但是百度看了很多人的写法代码量都相当的大。
当然搜到的结果都不是我想要的,于是只有自己写啦。两个矩形(不考虑旋转)相交大概就那么几种情况,如下图:
网上的算法要么就是判断顶点是否被包含,判断线段是否相交等等,这样做的不好的地方是要判断很多种情况。经过简单的分析我的方法如下图所示:
就是利用两个矩形中心点的距离去判断,如果两个矩形相交,他们的中心点的距离必然满足图中的两个条件。下面是代码:
/* 判断矩形是否相交 */
bool SelfRect::intersect(SelfRect * rect