我有一个用 Swift 编写的非常简单的 SpriteKit 游戏,其中有两个场景,我试图在它们之间进行转换。此代码完美运行:
let skView = self.view as SKView
let scene = GameScene(size: self.scene.size)
scene.size = skView.bounds.size
scene.scaleMode = .AspectFill
//This line shows the new scene immediately (as expected)
skView.presentScene(scene)
当我用这个替换上面的代码行时,麻烦就来了:
let sceneTransition = SKTransition.doorsCloseHorizontalWithDuration(2.0)
skView.presentScene(scene, transition: sceneTransition)
当我这样做时没有任何反应(当前场景保留在屏幕上)。我尝试了几种不同的转换,但总是得到相同的结果。
有什么想法吗?
最佳答案
已解决。
事实证明,上面的代码没有任何问题。问题是我试图根据特定 SKPhysicsBody 的位置在更新函数中执行它。转换不会立即发生,因此它有时间让 update 被反复调用,从而一遍又一遍地重新触发转换。这导致过渡从未发生。
解决方法是添加一个 bool 值来检查我是否已经开始转换,所以我只尝试了一次。
关于ios - SKTransition 在 Swift 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25215517/