0

私の cocos2d ゲームでは、ある種の「パワーアップ」があり、一度達成すると、キャラクターが青色になり、プラットフォームが青色になり、背景も青色になります。これが最善の方法で実装されているかどうかはわかりませんので、他の提案があれば共有してください!:)

blueCalledというインスタンス変数を持つクラスBlueを作成しました

このクラスを「プラットフォーム」クラスと「プレーヤー」クラスの両方にインポートしました。

パワーアップとプレーヤーの衝突コードは、私の Platform クラス内にあります。これは、パワーアップがヒットしたときのコードです。

    // try remove powerup
- (void) tryRemovePowerup
{
    NSMutableArray * currentPowerUpArray = [self getcurrentPowersArr];

    if(currentPowerUpArray)
    {
        int playerY = ((CCLayer*)(self.player)).position.y;
        for(int x=0; x<[currentPowerUpArray count];x++)
        {
            CCSprite *powerup = [currentPowerUpArray objectAtIndex:x];

            if(abs(powerup.position.x+powerup.parent.position.x-[Player initX])<50)
            {
                if(abs(powerup.position.y+blueberry.parent.position.y-playerY)<30 && powerup.visible && powerup.visible)
                {
                    [power.parent powerup cleanup:YES];

                    CGSize winSize = [[CCDirector sharedDirector] winSize];
                    [[SimpleAudioEngine sharedEngine] playEffect:@"yay.wav" pitch:1 pan:0 gain:1];
                    // THIS IS WHERE ALL OF EFFECTS SHOULD HAPPEN
                    NSLog(@"powerup hit");

                }
            }
        }
    }


    [self hitTestOB];
}

// THIS IS WHERE ALL OF EFFECTS SHOULD HAPPEN の場所は、すべてを青くしたい場所です。現時点では、Blue クラスのインスタンス変数を YES に設定することでこれを行う予定です。

1. メイン プレーヤーのフレーム、2. バックグラウンド、3. プラットフォーム フレームを処理するメソッドには、Blue クラスのインスタンス変数が YES か NO かをチェックする if ステートメントがあり、それに応じて動作します。ただし、プラットフォームとプレーヤー クラスで Blue クラスのインスタンス変数を使用する方法がわかりません。また、これがパワーアップを実装する最善の方法であると 100% 確信できるわけでもありません。

あなたが私に提供できる助けをありがとう:)

iOSに行きましょう!

4

1 に答える 1