[英]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.