0

我在不使用 Box2d 的情况下尝试碰撞检测,所以当我减少计数时,我使用了一个内置函数 CCRectIntersectsRect(),它在一次碰撞中被减少到负值。(当球接触英雄和当球越过英雄时。)

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

cocos2d-x中如何使用box2d进行碰撞检测的完整源码

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

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

2 回答 2

1

创建一个名为 的持久布尔变量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;
于 2012-01-30T05:28:34.573 回答
0

用 1 初始化计数 if(CCRect::CCRectIntersectsRect(bom,gon) && count > 0) { count--; }

于 2012-01-30T05:29:51.047 回答