1

宿題のためにやろうとしているこのゲームに、このゲームオーバーシーンを追加したいのですが、ターゲットを倒すとゲームオーバーシーンがポップアップする場所がないようです。コードをすべての行に配置して、最終的に機能するかどうかを確認しましたが、機能しませんでした。だから今、私はいくつかの助けを求めなければなりません。

。mファイル

  - (void)addTarget10 {
 Boss *target10 = nil;    
 if ((arc4random() % 2) == 0) {{
    target10 = [WeakAndFastBoss9 boss9];
     }}  else {
    target10 = [WeakAndFastBoss9 boss9];
    }                      
 [[SimpleAudioEngine sharedEngine] playEffect:@"lastboss.mp3"];        
 // Determine where to spawn the target along the Y axis
CGSize winSize = [[CCDirector sharedDirector] winSize];
int minY = target10.contentSize.height/2;
int maxY = winSize.height - target10.contentSize.height/2;
int rangeY = maxY - minY;
int actualY = (arc4random() % rangeY) + minY;
// Create the target slightly off-screen along the right edge,
// and along a random position along the Y axis as calculated above
target10.position = ccp(winSize.width + (target10.contentSize.width/2), actualY);
[self addChild:target10 ];
// Determine speed of the target
int minDuration = target10.minMoveDuration;
int maxDuration = target10.maxMoveDuration;
int rangeDuration = maxDuration - minDuration;
int actualDuration = (arc4random() % rangeDuration) + minDuration;
// Create the actions
       id actionMove = [CCMoveTo actionWithDuration:actualDuration position:ccp(-       target10.contentSize.width/2, actualY)];
      id actionMoveDone = [CCCallFuncN actionWithTarget:self 
                                         selector:@selector(spriteMoveFinished9:)];
[target10 runAction:[CCSequence actions:actionMove, actionMoveDone, nil]];

target10.tag = 1;
[_targets addObject:target10];   
}
 -(void)gameLogicboss9:(ccTime)dt {


[self unschedule:_cmd];    



[self addTarget10];
  }

    - (void)updateboss9:(ccTime)dt {
CGRect projectileRect = CGRectMake(projectile.position.x - (projectile.contentSize.width/2), 
                                   projectile.position.y - (projectile.contentSize.height/2), 
                                   projectile.contentSize.width, 
                                   projectile.contentSize.height);

BOOL bossHit = FALSE;
NSMutableArray *targetsToDelete = [[NSMutableArray alloc] init];


for (CCSprite *target1 in _targets) {
    CGRect target1Rect = CGRectMake(target1.position.x - (target1.contentSize.width/2), 
                                    target1.position.y - (target1.contentSize.height/2), 
                                    target1.contentSize.width, 
                                    target1.contentSize.height);


    if (CGRectIntersectsRect(projectileRect, target1Rect)) {

        [targetsToDelete addObject:target1];    
        bossHit = TRUE;
       Boss *boss = (Boss *)target1;
       boss.hp--;
       if (boss.hp <= 0  ) {
            [targetsToDelete addObject:target1];
            }
        break;

    }                       
}

for (CCSprite *target in targetsToDelete) {
    [_targets removeObject:target];

    [self removeChild:target cleanup:YES];                                  


     _projectilesDestroyed++;
    if (_projectilesDestroyed > 2) {


    }
}

if (bossHit) {
    //[projectilesToDelete addObject:projectile];

}
  [targetsToDelete release];



 }

  -(void)spriteMoveFinishedboss9:(id)sender {
CCSprite *sprite = (CCSprite *)sender;
[self removeChild:sprite cleanup:YES];




if (sprite.tag == 1) { // target
    [_targets removeObject:sprite];





} else if (sprite.tag == 2) { // projectile





    [_projectiles removeObject:sprite];
    }     }

これは、ターゲット10/ボス9が倒されたときに追加したいゲームオーバーシーンです。

GameOverScene *gameOverScene = [GameOverScene node];
[gameOverScene.layer.label setString:@"You Lose"];
[[CCDirector sharedDirector] replaceScene:gameOverScene];    

今のところ、私のもう1つのゲームオーバーシーンは、スプライトが画面を通過して移動したときです。質問に答える必要がある場合は、遠慮なく質問してください。

4

2 に答える 2

0

では、新しいシーンを作成する必要があります。これは、[ファイル]-> [新しいファイル]を使用して簡単に実行でき、NSObjectのサブクラスにします。次に、サブクラスをCCLayerに変更します。テストとして、helloworldレイヤーからコードをコピーするだけです。次に、helloworldレイヤークラスに新しいクラスをインポートして、そのインスタンスを作成します。次に、メソッドで[[CCDirector sharedDirector] replaceScene:sceneName];を使用します。

あなたはより多くの情報のためにこのサイトを使うことができます、それは非常に役に立ちます、それを読むだけであなたはあなたの答えを見つけるでしょう:http://www.raywenderlich.com/352/how-to-make-a-simple-iphone-game- with-cocos2d-チュートリアル

于 2012-07-12T21:55:45.817 に答える
0

シーン置換の場合は、ゲームコードでこれを試してください。

まず、このコードをGameOverSceneクラスに追加します

+(CCScene *) scene
{
    // 'scene' is an autorelease object.
    CCScene *scene = [CCScene node];

    // 'layer' is an autorelease object.
    GameOverScene *layer = [GameOverScene node];

    // add layer as a child to scene
    [scene addChild: layer];

    // return the scene
    return scene;
}

GameOverClassをCCLayerのサブクラスにする、シーンを変更したいときよりもこれを行う

[[CCDirector sharedDirector] replaceScene:[GameOverScene scene]];
于 2012-07-14T09:19:04.873 に答える