0

クイック ヘルプが必要です。私は最初のゲーム Cocos 2D と Box 2D を作成していますが、衝突中にテキストを表示する方法について助けが必要です。基準は非常に単純です。石とパチンコを使って、上から落ちてくる物を叩く必要があります。各オブジェクトには独自のポイントと機能があります。そのうちの 1 つを実装する必要があります。石が 3 つ以上のオブジェクトを破壊した場合、「コンボ」という単語が画面に表示され、徐々に消えていきます。返信や提案をお待ちしております。

よろしく、

カーシック

4

2 に答える 2

1

たとえば、 cginterectrect では、更新時に衝突を検出し、次のようなテキストを記述する必要があります。

コード例:-

if (CGRectIntersectsRect(projectileRect, targetRect)) {
                [targetsToDelete addObject:target];
                CCMenuItem *pause_menu = [CCMenuItemImage itemFromNormalImage:@"pause.png" selectedImage:@"pause.png" target:self selector:@selector(pauseGame:)];
                CCMenu *menu = [CCMenu menuWithItems: pause_menu, nil];
                menu.position = ccp(460, 15);
                [self addChild:menu ];
            }   
于 2011-01-26T10:30:38.800 に答える
0

かなり単純明快に思えます:

// use this to keep track of how many stones are destroyed, 
// every time a stone is destroyed, increment it by 1
int count = 0;

「コンボ」を表示するには、グラフィックまたはラベルを使用する必要があります。これは cocos2d の例で説明されているため、ここでは表示方法について説明しません。

ここから、「tick」コールバックで「count」の値を確認し、「3」(「マジック」ナンバー) 以上である場合は、「コンボ」ノードで次のアクション シーケンスを実行します。

CCFadeIn *fadeIn = [CCFadeIn actionWithDuration: 0.25f];
CCFadeOut *fadeOut = [CCFadeOut actionWithDuration: 0.0125f];
CCDelayTime *delay = [CCDelayTime actionWithDuration: 0.5f];
[node runAction: [CCSequence actions: fadeIn, delay, fadeOut, nil];

この一連のアクションは、ノードを 4 分の 1 秒かけてフェード インし、0.5 秒待ってから 8 分の 1 秒かけてフェード アウトします。コードの必要に応じてタイミングを調整できます。カウンターが > 3 の場合にできるいくつかの追加のことは、「コンボ」テキストを最後に破壊されたアイテムの位置に再配置するか、その位置をランダム化して、常に同じ場所にあるとは限らないなどです...

コード例の「ノード」オブジェクトは、シーンに追加されたままの CCSprite または CCLabel ですが、単に可視性が切り替えられているだけです (このアイテムは「頻繁に」シーンに表示される可能性が高いため、シーンに残した方がよいでしょう)。新しいアイテムを作成して毎回破棄するのではなく、可視性を変更します-まれなアイテムの場合は、新しいアイテムを作成して破棄します...

于 2010-12-27T20:06:43.303 に答える