我正在尝试不使用Box2d进行碰撞检测,
所以我使用了内置函数CCRectIntersectsRect()
当我减少计数时,使用此功能可在一次碰撞中将其减少为负值。 (当球接触到英雄时,以及球穿过英雄时。)

我只想以某种方式安排它,以便计数-仅被调用一次。

有关完整的源代码how to use box2d for collision detection in cocos2d-x

CCRect bom= ball->boundingBox();
CCRect gon= hero->boundingBox();

if(CCRect::CCRectIntersectsRect(bom,gon))
{
    count--;
}

最佳答案

创建一个名为colliding的持久布尔变量,并按如下所示使用它:

if(CCRect::CCRectIntersectsRect(bom,gon))
{
    if (!colliding)
        count--;
    colliding = true;
}
else
    colliding = false;


这是您在下面的注释中提供的代码的修复程序:

CCRect bom= roll->boundingBox();
CCRect gon= hero->boundingBox();
static bool colliding=false;
if(CCRect::CCRectIntersectsRect(bom,gon))
{
    if (!colliding)
    {
        intersection();
        colliding = true;
    }
}
else
    colliding = false;

08-16 00:37