精灵套件加载新场景,但精灵立即掉落



我正在按照这个(https://www.raywenderlich.com/100560/video-tutorial-how-to-make-a-game-like-flappy-bird-in-swift-part-6-collision-detection)视频教程系列来了解SpriteKit,但是使用Xcode 7.2似乎有一个错误,在精灵掉落后,用户点击屏幕并切换到NewGame被调用,但是精灵立即掉到地上,我不知道为什么。 下面是switchToNewGame和整个代码:https://gist.github.com/gesabo/2e585f22c2860af13e099590a2e00e47

 func switchToNewGame() {
        runAction(popAction)
        let newScene = GameScene(size: size)
        let transition = SKTransition.fadeWithColor(SKColor.blackColor(), duration: 1.0)
        view?.presentScene(newScene, transition: transition)
    }

我想也许这与RW使用的didMoveToView physicsWorld.gravity = CGVector(dx: 0, dy: 0)的这条线有关,因为他说他想控制重力而不是SpriteKit,但删除它似乎不会影响这个问题。

他为什么不会倒下?,你的默认游戏状态是。播放,因此一旦场景加载,您的鸟就开始下落。 现在,当您过渡时,您的场景正在运行,因此您的鸟可能会因此而进一步下降。

我会推荐

1)将游戏状态更改为游戏以外的内容,然后在准备好时将其更改为播放

2)在过渡期间暂停场景,查看SKTransition文档以达到您想要的效果

3) 使用 dispatch_async(dispatch_get_main_queue()) 加载新场景,使加载时间不会影响场景时间。 (基本上你从场景中得到的第一个更新时间可能很长,扭曲过渡)

注意:从 9.3 开始,暂停变量被错误,由于某种原因,它也改变了所有子变量的暂停状态,因此在转换时,您可能会得到一些不良影响

最新更新