Почему я не могу добавить SKScene в другую SKScene?

Я пытаюсь сделать так, чтобы эта SKScene появлялась в середине сцены в конце игры, чтобы предыдущая сцена все еще была видна на заднем плане (аналогично финалу Flappy Bird). Это изображение того, как я хочу, чтобы оно выглядело:

введите здесь описание изображения

Пока это код, который я сделал:

в игровой сцене:

-(void)dieFrom:(SKNode*)killingDebris {
    _touched = YES;

    if (_touched == YES) {
        beatLevel = YES;
        NSLog(@"touched");

        [self runAction:[SKAction sequence:@[
            [SKAction runBlock:^{
            [_goodSquare removeFromParent];
        }],
            [SKAction runBlock:^{

            level2Achieved = [[NSUserDefaults standardUserDefaults] integerForKey:@"newLevelAchieved"];
            if (beatLevel == YES) {
                level2Achieved = 2;
            }
            [[NSUserDefaults standardUserDefaults] setInteger:level2Achieved forKey:@"newLevelAchieved"];
            [[NSUserDefaults standardUserDefaults] synchronize];
            [self removeAllChildren];
        }],
            [SKAction waitForDuration:1.5],
            [SKAction runBlock:^{

            [self endGame];

        }],
                                                   ]]];

    }
}

-(void)endGame {

    [self removeAllActions];

    gameOverScene *gameOverNode = [[gameOverScene alloc] initWithScore:self.score];
    gameOverNode.gameScene = self;
    gameOverNode.position = CGPointMake(self.scene.size.width/2, -150);
    [self addChild:gameOverNode];

    [gameOverNode runAction:[SKAction moveToY:self.scene.size.height/2 duration:0.6]];
}

В заголовочном файле окончания игры:

@class testScene;

@interface gameOverScene : SKScene

@property (weak, nonatomic) testScene *gameScene;

-(instancetype)initWithScore:(NSInteger)score;

@end

В реализации геймовера:

-(instancetype)initWithScore:(NSInteger)score {

    if (self = [super init]) {
        self.userInteractionEnabled = YES;
        self.zPosition = 5.0;

        SKSpriteNode *bg = [SKSpriteNode spriteNodeWithColor:[SKColor redColor] size:CGSizeMake(280, 300)];
        bg.alpha = 0.6;
        [self addChild:bg];
    }
    return self;
}

НО это то, что я получаю, когда тестирую его на симуляторе: введите здесь описание изображения

Со следующими сообщениями об ошибках:

2014-05-11 15:22:05.502 test2[2825:60b] SKScene: Setting the zPosition of a SKScene has no effect.
2014-05-11 15:22:05.503 test2[2825:60b] SKScene: Setting the position of a SKScene has no effect.
2014-05-11 15:22:05.504 test2[2825:60b] SKScene: Animating the position of a SKScene has no effect.

Кто-нибудь может сказать мне, где я ошибся и как это исправить? Спасибо. Пожалуйста, дайте мне знать, если потребуется какая-либо дополнительная информация.


person Liam Stockhomme    schedule 11.05.2014    source источник
comment
Пожалуйста, выберите лучший заголовок для вашего вопроса. С этим названием будет трудно получить хорошие ответы.   -  person dasdom    schedule 11.05.2014
comment
У вас может быть только одна сцена на SKView, а на iOS только один SKView. Что вам нужно сделать, так это спроектировать часть красного квадрата как наложение (с использованием узлов) текущей сцены.   -  person LearnCocos2D    schedule 11.05.2014
comment
Я изменил название для вас, так как думаю, что это была единственная причина, по которой за вас проголосовали. Сам вопрос кажется прекрасным.   -  person jrturton    schedule 11.05.2014
comment
@LearnCocos2D, не могли бы вы привести пример?   -  person Liam Stockhomme    schedule 11.05.2014
comment
Вы знаете, как добавлять в сцену спрайты и другие узлы? Сделайте это и поместите их все в один и тот же родительский узел и добавьте этот родительский узел. Готово.   -  person LearnCocos2D    schedule 11.05.2014
comment
Спасибо. @LearnCocos2D   -  person Liam Stockhomme    schedule 12.05.2014


Ответы (2)



Представьте сцену как отдельную часть вашего приложения. Сцены различаются по своей функции, например, у вас может быть сцена главного меню, сцена рекордов, сцена геймплея, сцена титров.
Каждая из них сильно отличается от другой. Сцена — это цельная сущность, она содержит все, что вы можете от нее захотеть. Вы не вкладываете сцены.

То, что вы хотите сделать, может быть выполнено с помощью SKNode или SKSpriteNode. Просто создайте новый узел и добавьте его в свою сцену. Переместите его в какие-нибудь дальние координаты (например, 10000, 10000).

Когда вы хотите показать это, просто измените координаты на нужные.

person Dvole    schedule 12.05.2014