我正在尝试不使用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;