Анимируйте альфа-канал SKSpriteNode, пока SKScene находится в режиме паузы - PullRequest
0 голосов
/ 20 января 2019

Чтобы поставить игру на паузу, я приостанавливаю весь SKView и пытаюсь исчезнуть с помощью кнопки «home»:

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 также приостановлен.Как я могу по-прежнему анимировать альфа этой кнопки, чтобы она исчезла после приостановки сцены?

1 Ответ

0 голосов
/ 20 января 2019

Если вы приостановите весь 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
...