ios - SpriteKit 加载新场景但 Sprite 立即掉落

标签 ios swift sprite-kit

我正在关注此 ( 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 似乎存在一个错误,在该错误中,在 Sprite 掉落后,用户点击屏幕并调用 switchToNewGame,但是 Sprite 立即掉到地上,我不明白为什么。下面是 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)
    }

我认为这可能与 didMoveToView 中的 physicsWorld.gravity = CGVector(dx: 0, dy: 0) 这行有关,RW 使用它是因为他说他想要控制重力而不是 SpriteKit,但删除它似乎并没有影响这个问题。

最佳答案

他为什么不掉下来?您的默认 GameState 是 .Play,所以一旦您的场景加载,您的鸟就会开始掉落。现在,当您进行过渡时,您的场景正在运行,因此您的鸟可能会因此而进一步下降。

我会推荐

1) 将 gameState 更改为 play 以外的其他内容,然后在准备好时将其更改为 play

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

3) 使用dispatch_async(dispatch_get_main_queue()) 加载新场景,这样加载时间就不会影响场景时间。 (基本上,您从场景中获得的第一次更新时间可能会很长,从而扭曲过渡)

注意:从 9.3 开始,paused 变量有问题,出于某种原因它也会更改所有子项的暂停状态,因此在转换时,您可能会得到一些不希望的效果

关于ios - SpriteKit 加载新场景但 Sprite 立即掉落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38312792/

相关文章:

ios - Azure AD Graph 获取用户 REST API 调用无法返回用户实体缩略图字段

ios - 根据值更改 Swift 中语句的类型

iOS SpriteKit 重叠 SKSpriteNodes/images

ios - SpriteKit - 在 Gamescene.sks 中创建 Sprite 并在另一个类中引用

ios - 将 Xcode 更新到 7.0 后出错

sprite-kit - 背景没有填满整个 View SpriteKit

iOS:奇怪的 XCode 编译错误

ios - XE5 iOS 应用程序 - 从本地存储打开 PDF

objective-c - subview 显示在父 UIView 的边界之外

Swift 4 函数参数 var