0

Box2dを使用せずに衝突検出を試みているため、1回の衝突で負の値に減少するカウントをデクリメントするときに、この関数を使用して組み込み関数 CCRectIntersectsRect() を使用しました。(ボールがヒーローに触れたとき、およびボールがヒーローを横切ったとき。)

私が望むのは、カウントが一度だけ呼び出されるように、何らかの方法でスケジュールすることだけです。

完全なソース コードについては、cocos2d-x での衝突検出に box2d を使用する方法

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

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

2 に答える 2

1

という永続的な bool 変数を作成し、次の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 に答える