使用 Swift 在 Spritekit 中暂停 SKAction

Pause an SKAction in Spritekit with Swift

我有以下代码来移动 SKSpriteNode

let moveDown = SKAction.moveBy(CGVectorMake(0, -120), duration: 1)
let moveUp = SKAction.moveBy(CGVectorMake(0, +120), duration: 1)
let moveSequence = SKAction.sequence([moveDown, moveUp])
square.runAction(SKAction.repeatActionForever(moveSequence))

这会使 SKSpriteNode 永远上下移动。有什么方法可以让我暂停 SKAction?让SKSpriteNode定格在现在的位置,等我决定了再继续移动?

我只想暂停这个SKSpriteNode的动作。我不想暂停 SKScene。就这1的动静SKSpriteNode

您应该 运行 一个带有键的操作:

 square.runAction(SKAction.repeatActionForever(moveSequence), withKey:"moving")

然后,使用动作的速度属性暂停它:

if let action = square.actionForKey("moving") {

        action.speed = 0       
}

或取消暂停:

action.speed = 1

@Whirlwind 的答案的替代方法是,如果您有一堆需要暂停的动作不在一个组中,而不仅仅是运动,则只需暂停节点本身。所有 SKNode 都有一个 paused 属性 与之关联。

例如。 square.paused = true

SCNNode.paused 已重命名为 SNCNode.isPaused。
您应该能够执行以下操作 暂停动画: square.isPause=真 重启动画: square.isPaused=假