Spritekit:暂停父节点不会暂停子节点

时间:2017-01-31 20:19:25

标签: ios swift sprite-kit swift3

我正在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

当我运行这个时,我看到球在屏幕上移动,这根据我的理解不应该发生,因为我暂停了spriteNodeself.view?.isPaused = true是该节点的子节点。如果我使用worldNode来暂停场景,那么球会按预期静止不动。我错过了什么吗?如何将节点添加到worldNode,然后通过暂停{{1}}暂停这些节点。谢谢!

1 个答案:

答案 0 :(得分:0)

暂停场景和力量暂停节点的一种方法当然是暂停场景:

self.isPaused = true

但我想说你想让其他节点取消暂停(例如HUD元素),所以你将游戏元素添加到世界节点中。

因此暂停物理以及暂停节点的一种方法是暂停完整的物理世界,如下所示:

self.physicsWorld.speed = 0