在SKScene暂停时为SKSpriteNode的Alpha设置动画

时间:2019-01-20 10:20:05

标签: swift sprite-kit

要暂停游戏,请暂停整个SKView并尝试淡入“主页”按钮:

self.addChild(pauseHomeButton) // Button node to return to home screen, with alpha 0
pauseHomeButton.run(SKAction.fadeAlpha(to: 1, duration: .5))

self.speed = 0
self.isPaused = true

由于SKView已暂停,因此SKAction也已暂停。我如何仍可以为该按钮的Alpha设置动画,以使其在场景暂停后逐渐消失?

1 个答案:

答案 0 :(得分:1)

如果您暂停整个SKView,或者更可能暂停SKScene,则无法对其子节点中的任何子节点执行任何操作。

因此,目标是仅暂停您需要暂停的节点。要实现此目的,请为“游戏对象”等设置一个节点,并为“控制”节点设置另一个单独的节点。因此,当一个节点将被暂停时,它不会影响另一个不会被暂停的节点,您将能够在该节点或其子节点上执行操作

class GameScene: SKScene {
    var node = SKNode()
    var controlNode = SKNode()
}

现在将游戏节点等添加为node的子代,并将诸如此类的pauseHomeButton添加为controlNode的子代

controlNode.addChild(pauseHomeButton)

现在只需暂停node并在需要时更改其速度

pauseHomeButton.run(SKAction.fadeAlpha(to: 1, duration: .5))

node.speed = 0
node.isPaused = true