OStack程序员社区-中国程序员成长平台

标题: ios - SKScene 从今天开始在 spriteKit 中没有改变 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 21:20
标题: ios - SKScene 从今天开始在 spriteKit 中没有改变

我从今天开始在我的游戏中遇到问题,当时我试图改变场景。这有点好笑,当我与敌人发生碰撞时我没有问题。我调用我的 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];


}

如您所见,图层“muerto”(死亡)添加了 y 位置,但场景没有改变



Best Answer-推荐答案


在 didSimulatePhysics 的情况下,以 0 持续时间进行过渡。您可以使用一些 BOOL 来检查它是哪种 Game Over。它对我有用。虽然不知道这背后的原因。

关于ios - SKScene 从今天开始在 spriteKit 中没有改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22942849/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4