确保每次碰撞只触发一次碰撞检测
Ensure collision detection triggers only once per collision
我尝试在不使用Box2d的情况下进行碰撞检测,所以我使用了一个内置函数CCRecectIntersectsRev()使用这个函数,当我减少计数时,它会在一次碰撞中减少到负值。(当球碰到英雄和球越过英雄时。)
我只想以某种方式安排它,这样计数只会被调用一次。
完整的源代码如何使用box2d在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;
用1初始化计数if(CCRect::CCRecectIntersectsRect(bom,gon)&;计数>0){计数--;}
相关文章:
- 我是否需要在下一次转移时将所有权*转移回转移队列
- 落砂模拟碰撞检测C++和SFML
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 在C++中一次将矢量值写入多个文件
- 循环中的条件:为什么每次都调用strlen(),而vector.size()只调用一次
- 为什么 zlib 放气初始化调用一次不起作用?
- 在一次迭代中从 txt 文件中读取多行
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- 在头文件和 cpp 文件中使用一次 #pragma 时出现结构重定义错误
- 有没有办法一次声明相同类型的多个对象,并通过一个表达式立即使用相同的右值初始化它们?
- 高级选择排序 - 在一次迭代中搜索两个元素
- 具有相同特征的两个对象是否只在内存中存储一次?无论定义它们的函数是什么,都是不同的
- 如何仅使用一次固定<<设置精度(2)?或者至少恢复到默认行为?
- 什么是仅调用一次并调用参数的控制台应用
- 如何确保用户在一行上提示输入一次时输入名字和姓氏?
- 从粗略到精细的碰撞检测-同一物体上的多次碰撞
- 如何检测相同的键盘键只按一次
- 在QTextEdit中,如何检测用户何时只将光标插入文本区域一次
- 确保每次碰撞只触发一次碰撞检测
- 如何在一组球体上最有效地执行碰撞检测