我正在尝试不使用Box2d进行碰撞检测, 所以我使用了内置函数CCRectIntersectsRect() 使用此功能,当我减少计数时,它会在单次碰撞中减少到负值。 (当球接触英雄并且球越过英雄时。)
我想要的只是以某种方式安排它,以便count--只被调用一次。
完整的源代码how to use box2d for collision detection in cocos2d-x
CCRect bom= ball->boundingBox();
CCRect gon= hero->boundingBox();
if(CCRect::CCRectIntersectsRect(bom,gon))
{
count--;
}
答案 0 :(得分:1)
创建一个名为colliding
的持久性bool变量,并按如下方式使用它:
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;
答案 1 :(得分:0)
用1初始化计数 if(CCRect :: CCRectIntersectsRect(bom,gon)&& count> 0) { 计数 - ; }