我遵循使用边界框方法的简单碰撞检测方法,并检查它们是否相交。
代码如下:
CCRect projectileRect = projectileSprite->boundingBox();
CCRect enemyRect = enemySprite->boundingBox();
if (projectileRect.intersectsRect(enemyRect)) {
// do stuff
}
编辑:我也尝试通过获取 x、y 位置并添加精灵的宽度和高度来创建自己的边界框。
现在,发生了一件有趣的事情,即碰撞检测有效,但它的工作有点不正确。在实际交叉点发生之前检测到碰撞检测。
我通过打开 CC_SPRITE_DEBUG_DRAW 验证了这一点,它确实发生在碰撞发生前的几分钟,即射弹的边界框在敌人的边界框之外。
这似乎是大多数人推荐的基本功能,我似乎遗漏了一些东西。谁能推断出,我可能做错了什么?
PS:我用 cocos2d-x-2.2 和 cocos2d-2.1rc0-x-2.1.3 验证了这一点。
PPS:顺便说一句,我尝试使用 ccDrawSolidRect 绘制我自己的边界框,但我似乎无法让它工作。