从今天开始,SKScene并没有改变spriteKit

时间:2014-04-08 16:25:39

标签: ios objective-c sprite-kit

我在游戏中遇到问题,当我尝试改变场景时。这有点好笑,当我与敌人发生碰撞时,我没有遇到任何问题。我调用我的resetScene函数来创建gameOver场景并显示它。但是,当我陷入一个洞,并拨打同样的电话时,我的游戏并没有改变现场。我在resetScene函数中添加了一个新标签,因此当编译器进入此代码时,将添加一个图层。现在,当我进入一个洞时,我得到了一层,但场景并没有改变。这有点让人困惑。我将展示代码和屏幕截图:

这是唯一有效的地方:

            /**********
        if hero collide with enemy
                              *******/
-(void)didBeginContact

{
        if(bodyB.physicsBody.categoryBitMask == enemy)
        {
            if(!YES == _deadAnimation)
            {
                if(_stars > _bestScore )
                {
                    _bestScore = _stars;

            }
            if(_bestScore> [self.prefs integerForKey:@"bestScore"])
            {
                [self.prefs setInteger:_bestScore forKey:@"bestScore"];
            }
            _deadAnimation = [self runDeadAnimation]; // (only return BOOL YES for the moment)


            [self resetScene];
        }
    }
}

现在这是它不起作用的地方:

-(void)didSimulatePhysics
{


/* reset scene if fall*/
if(self.hero.position.y < 100)
{
    _deadAnimation = [self runDeadAnimation]; // (only return BOOL YES for the moment)
    [self resetScene];

}
/* reset scene if stay behind */
if(self.hero.position.x<10 ){
    [self resetScene];
}

}

这是我的重置功能:

{
[_hero removeFromParent];
[self addDebugLayer:@"dead" xPosition:200 yPosition:200 childPos:_hero.position.y infinite:YES]; // <<-----(add a new SKLabel)

SKScene *mundo1  = [[XYZGameOver alloc] initWithSize:self.size];
SKTransition *doors = [SKTransition fadeWithDuration:0.2];
[self.view presentScene:mundo1 transition:doors];


}

正如您所看到的,该层&#34; muerto&#34; (死)与y位置相加,但场景没有改变  

1 个答案:

答案 0 :(得分:1)

如果是didSimulatePhysics,请执行0持续时间的转换。您可以使用一些BOOL来检查它的游戏类型。它对我有用。虽然不知道背后的原因。