繁体   English   中英

确保每次碰撞仅触发一次碰撞检测

[英]Ensure collision detection triggers only once per collision

我在不使用Box2d的情况下尝试进行碰撞检测,因此当我减少一次碰撞时将计数减少为负值时,便使用了内置函数CCRectIntersectsRect()。 (当球接触到英雄时,以及球穿过英雄时。)

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

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

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

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

创建一个名为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初始化计数if(CCRect :: CCRectIntersectsRect(bom,gon)&& count> 0){count--; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM