天天看点

cocos2d-x 碰撞检测

假设两个 sprite, 每个的图片是缩放的, 而sprite 的上层节点也设置了缩放比例。 这个该怎么方便的进行碰撞检测?

取得屏幕的绝对坐标,和缩放后在屏幕上的size。 取得屏幕的绝对坐标好弄, 后面的计算size有些麻烦(因为有缩放系数),求教大家是怎么办的 ? 答案1: 其实缩放不缩放是一样的啊,如果粗略一些就计算这2个sprite的中心点距离,如果大于等于二者高度或者宽度之和的一半,则为已碰撞,如果想精确些那么要计算每个sprite的轮廓上每个角的坐标来比较! 答案2: contentsize 是实际的大小。

或者采取画矩形相交判断,

圆形半径判断。 答案3: CGRect projectileRect = CGRectMake(projectile.position.x ,        projectile.position.y ,    projectile.contentSize.width    ,        projectile.contentSize.height );

CGRect targetRect = CGRectMake(target.position.x ,        target.position.y ,    target.contentSize.width,        target.contentSize.height);                   

if (CGRectIntersectsRect(projectileRect, targetRect)) {

                                碰撞了.                       

}                                               

第一个代表rect是a物体在屏幕上占的空间.第二个rect是b物体占的空间.两个空间相交则表示碰撞了.

继续阅读