ios - Sprite 套件 : How to add scene on top of running scene

标签 ios objective-c sprite-kit

所以我正在努力将我的 cocos2d 游戏移植到 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 kit 中做这样的事情的正确方法是什么?

我的游戏结束类应该从(SKNodeSKViewSKScene)继承什么?

我尝试使用 SKScene ,但你不能有 2 个正在运行的场景(或者我错了吗?),所以我将小时候的场景添加到主游戏场景中。但是触摸事件仅在主游戏场景中被调用,而不是在游戏结束场景中被调用。所以我尝试了类似的东西
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInNode:self];

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

但是为了简单起见,当我重新启动关卡时,我不会重置所有内容的状态,我只是再次插入游戏场景,它不喜欢它,因为它在技术上仍在运行。

无论如何,覆盖需要触摸事件的菜单的正确方法是什么?

最佳答案

所以我最终使用了一个 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;
    }
    ...
}

一切正常,游戏结束出现在正在运行的游戏之上,并且可以获得输入。

关于ios - Sprite 套件 : How to add scene on top of running scene,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21800975/

相关文章:

ios - 如何更改按钮单击时 UICollectionView 的高度

php - 使用 php 从 xml 中删除元素 - 非正统的 xml

objective-c - 在 TableView 单元格中使用修饰键进行鼠标跟踪

ios - NSLayoutConstraint 和 "attach"两个标签互相

ios - '@' token main.m之前的预期表达式

objective-c - IOS保留在后端做什么

ios - 舍入 NSTimeInterval 对象的值

ios - 如何从另一个 .swift 文件添加 Sprite ?

swift - PhysicsBody 穿过另一个 PhysicsBody,同时仍然检测碰撞

ios - 使用更新当前时间来跟踪游戏时间