我遵循这个(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似乎有一个错误,在精灵掉落之后,用户点击屏幕并且switchToNewGame是但是,精灵立即掉到了地上,我无法弄清楚原因。以下是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)
}
我想也许这与physicsWorld.gravity = CGVector(dx: 0, dy: 0)
中的didMoveToView
行相关,RW使用因为他说他想控制重力而不是SpriteKit,但删除它似乎并没有影响这个问题。
答案 0 :(得分:1)
为什么他不会摔倒?,你的默认GameState是.Play,所以一旦你的场景加载,你的鸟就会开始下降。现在,当你进行过渡时,你的场景正在运行,因此你的鸟可能因此而进一步下降。
我会推荐
1)将gameState更改为播放以外的其他内容,然后在准备好时将其更改为播放
2)在过渡期间暂停场景,查看SKTransition文档以达到您想要的效果
3)使用dispatch_async(dispatch_get_main_queue())加载新场景,这样加载时间不会影响场景时间。 (基本上你从场景中获得的第一个更新时间可能很长,扭曲过渡)
注意:从9.3开始,暂停的变量被窃听,由于某种原因它也改变了所有孩子的暂停状态,所以在转换时,你可能会得到一些不良影响