在SKScene暂停时动画SKSpriteNode的alpha

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在SKScene暂停时动画SKSpriteNode的alpha相关的知识,希望对你有一定的参考价值。

要暂停我的游戏,我会暂停整个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设置动画,以便在场景暂停后淡入?

答案

如果您暂停整个SKView或在您的情况下更可能SKScene,您不能对其任何子节点执行任何操作。

因此,目标是暂停您需要暂停的节点。为实现此目的,为“游戏对象”等提供一个节点,为“控制”节点提供另一个单独的节点。因此,当一个节点暂停时,它不会影响另一个不会暂停的节点,您将能够对它或其子节点运行操作

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

现在添加游戏节点等作为node的孩子和这样的pauseHomeButtonas孩子的controlNode的东西

controlNode.addChild(pauseHomeButton)

现在只需暂停node,如果需要也可以改变速度

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

node.speed = 0
node.isPaused = true

以上是关于在SKScene暂停时动画SKSpriteNode的alpha的主要内容,如果未能解决你的问题,请参考以下文章

使用 UIPanGestureRecognizer 连续移动 SKSpriteNode

SKScene - 如何从 SKSpriteNode 获取类

向 SKSpriteNode(或 SKScene)添加背景模糊

如何在 SKSpriteNode 中正确封装触摸事件处理并将数据传回 SKScene

在 SKScene 中间保留一个物理体?

使用物理 SKSpriteNode 子级暂停 SpriteKit 游戏