精灵套件场景没有呈现

时间:2014-02-05 00:18:07

标签: ios iphone xcode ios7 sprite-kit

我有一个sprite-kit游戏,我需要经常检查玩家是否已经丢失

- (void)update:(NSTimeInterval)currentTime
{
 for (SKSpriteNode *sprite in self.alienArray ) {
    if (sprite.position.y < 10) {
        LostScene *lostScene = [[LostScene alloc] initWithSize: CGSizeMake(CGRectGetWidth(self.view.bounds), CGRectGetHeight(self.view.bounds))];
        NSLog(@"about to present");
        [self.view presentScene:lostScene transition:[SKTransition fadeWithDuration:0.5]];
    }

}

}

但是当调用此方法时(我知道正在发生),没有场景出现。我究竟做错了什么?我认为它与过渡有关,因为当我把它拿出来时,它可以正常工作

2 个答案:

答案 0 :(得分:5)

您应该添加现有场景的属性,例如:BOOL playerHasLost并编辑您的更新方法:

- (void)update:(NSTimeInterval)currentTime
{
if(!playerHasLost)
{
for (SKSpriteNode *sprite in self.alienArray ) 
{
  if (sprite.position.y < 10)
  {
    playerHasLost = YES;
    LostScene *lostScene = [[LostScene alloc] initWithSize: CGSizeMake(CGRectGetWidth(self.view.bounds), CGRectGetHeight(self.view.bounds))];
    NSLog(@"about to present");
    [self.view presentScene:lostScene transition:[SKTransition fadeWithDuration:0.5]];
    break;//to get out of for loop
  }
}
}
}

所以这种方式,只要精灵到达你被视为失去位置的位置,它就会将变量设置为YES,呈现场景并且不再重复。

答案 1 :(得分:0)

原因很简单,每一帧都会调用更新方法,运行过渡时,每一帧都会重新显示场景,因此看起来好像正在发生nithing。你应该看到NSLog垃圾邮件发送日志控制台。