我正在SpriteKit中创建我的第一个游戏。我试图暂停我的GameScene,然后通过SpriteKit运行一些动画。问题是,如果我使用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
,然后通过暂停{{1}}暂停这些节点。谢谢!
答案 0 :(得分:0)
暂停场景和力量暂停节点的一种方法当然是暂停场景:
self.isPaused = true
但我想说你想让其他节点取消暂停(例如HUD元素),所以你将游戏元素添加到世界节点中。
因此暂停物理以及暂停节点的一种方法是暂停完整的物理世界,如下所示:
self.physicsWorld.speed = 0