【发布时间】:2017-06-17 10:21:14
【问题描述】:
我正在用 SpriteKit 创建我的第一个游戏。我正在尝试暂停我的 GameScene,然后通过 SpriteKit 运行一些动画。问题是,如果我使用 self.view?.isPaused = true 暂停场景,一切都会停止。在四处搜索后,我发现这样做的方法是将另一个节点添加到场景中,并使您想要暂停的所有其他内容成为该节点的子节点。我正在尝试这样做,但没有成功。这是我的代码
var worldNode:SKNode?
override func didMove(to view: SKView) {
worldNode = SKNode()
self.addChild(self.worldNode!)
let spriteNode:SKSpriteNode = SKSpriteNode(imageNamed: "red_ball")
spriteNode.size = CGSize(width: 40, height: 40)
spriteNode.physicsBody = SKPhysicsBody(circleOfRadius: 15)
spriteNode.physicsBody?.isDynamic = true
self.worldNode?.addChild(spriteNode)
spriteNode.physicsBody?.applyImpulse(CGVector(dx: 10, dy: 10))
self.worldNode?.isPaused = true
//self.view?.isPaused = true
}
当我运行它时,我看到球在屏幕上移动,根据我的理解,这不应该发生,因为我正在暂停 worldNode 而 spriteNode 是它的子节点。如果我使用self.view?.isPaused = true 暂停场景,那么球就像预期的那样静止。我错过了什么吗?如何将节点添加到worldNode,然后通过暂停worldNode 仅暂停这些节点。谢谢!
【问题讨论】:
-
发布后我意识到即使直接使用 spriteNode.isPaused = true 暂停子节点,也不会暂停它,也许应用了 impluses 的节点不能以这种方式暂停?看来我需要找一个替代方案,也许改用 UI 动画,即使场景暂停,它也会继续工作
标签: ios swift sprite-kit swift3