之前所用到的碰撞检测均为cocos提供的方法。
1、点与矩形碰撞
auto rec = tubeOn1->getBoundingbox();// 得要矩形区域
bool collision = rec.containsPoint(p);//p这个点是否在矩形区域内,返回一个bool型的值
2、矩形与矩形的碰撞
auto rec1 = bird->getBoundingbox();
// 得要一个矩形区域
auto rec2 = tubeOn1->getBoundingbox();// 得要另一个矩形区域
bool collision = rec2.intersectsRect(rec1);// rec1是否在rec2内
cocos封装好了,用起来自然是方便,但如果是不规则图形间的碰撞检测(常见的有圆形与矩形),要想精确实现碰撞就需要我们自己来写了。
首先我们先进去看看底层的实现,然后模仿着写下。
// cocos底层
矩形与矩形的碰撞检测函数
bool
Rect
::intersectsRect(
const
Rect
& rect)
const
{
return !( getMaxX () < rect. getMinX () ||
rect. getMaxX () < getMinX () ||
getMaxY () < rect. getMinY () ||
rect. getMaxY () < getMinY ());
{
return !( getMaxX () < rect. getMinX () ||
rect. getMaxX () < getMinX () ||
getMaxY () < rect. getMinY () ||
rect. getMaxY () < getMinY ());