2014-02-15 93 views
1

所以我正在將我的cocos2d遊戲移植到Sprite Kit。Sprite Kit:如何在運行場景上添加場景

在cocos2d我有兩種情況,我會覆蓋整個遊戲場景的菜單。第一種情況是暫停,第二種情況是遊戲結束。

在cocos2d的遊戲結束我做

CCScene *runningScene = [[CCDirector sharedDirector] runningScene]; 
WaveEndLayer *waveEndedLayer = [[WaveEndLayer alloc] initWithWon:didWin]; 
[waveEndedLayer setOpacity:0]; 
[runningScene addChild:waveEndedLayer z:kZHUD]; 
CCFadeTo *fadeIn = [CCFadeTo actionWithDuration:0.5 opacity:255]; 
[waveEndedLayer runAction:fadeIn]; 

的WaveEndLayer類有一些關於它的CCMenuItems,和Cocos2d處理傳遞觸摸事件的處理程序。

在sprite套件中做這樣的事情的正確方法是什麼?

我的班級遊戲應該繼承什麼(SKNode,SKView,SKScene)?

我試過使用SKScene,但是你不能有2個運行的場景(或者我錯了嗎?),所以我把場景作爲一個孩子添加到主遊戲場景中。但觸摸事件只在主遊戲場景中被調用,而不是在場景中的遊戲。所以,我想是這樣

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches anyObject]; 
    CGPoint location = [touch locationInNode:self]; 

    if (_gameOver) 
    { 
     [_gameOverScene touchAtLocation:location]; 
    } 
} 

但爲了簡單起見,當我重新啓動的水平,我只是推的遊戲場景再次,它不喜歡的,因爲它是我不是重置所有的狀態技術上還在運行。

無論如何,疊加菜單需要觸摸事件的正確方法是什麼?

+1

嘗試簡單地將遊戲添加爲SKNode而不是SKScene,並將setUsserInteractionEnabled添加到YES。 –

+0

與狗頭人套件你得到pushScene和popScene方法就像在cocos2d – LearnCocos2D

回答

4

所以我結束了我的遊戲結束使用SKNode。

我將該圖層作爲子圖像添加到我的遊戲場景的init方法中。

_gameOverLayer = [[GameOverLayer alloc] initWithSize:size]; 
_gameOverLayer.alpha = 0; 
[self addChild:_gameOverLayer]; 

我在法比賽看起來是這樣的:

- (void)gameOver 
{ 
    _gameOver = YES; 
    SKAction *fade = [SKAction fadeInWithDuration:0.5]; 
    [_gameOverLayer runAction:fade]; 
} 

然後,我改變了我的遊戲場景我摸法有這樣的:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches anyObject]; 
    CGPoint location = [touch locationInNode:self]; 

    if (_gameOver) 
    { 
     [_gameOverLayer touchesEnded:touches withEvent:event]; 
     return; 
    } 
    ... 
} 

一切完美,遊戲過度出現在正在運行的遊戲之上,並且可以得到輸入。

相關問題