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

Posted

技术标签:

【中文标题】在 SKScene 暂停时为 SKSpriteNode 的 alpha 设置动画【英文标题】:Animate SKSpriteNode's alpha while SKScene is paused 【发布时间】:2019-01-20 10:20:05 【问题描述】:

要暂停我的游戏,我会暂停整个 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】:

如果您暂停整个 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

【讨论】:

谢谢,这有助于组织我的节点并且效果很好。

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

在SKScene暂停时动画SKSpriteNode的alpha

背景没有填满整个视图 SpriteKit

呈现 SKScene 后取消隐藏 UIButtons 时延迟?

如何从sks文件加载节点,然后应用在Scene Editor中定义的操作

在 Sprite Kit 中暂停 SKPhysicsWorld

无法拦截 Siri Remote 上的“暂停”按钮 - 始终停止背景音乐并且从不继续播放