在Spritekit中使用Swift暂停SKAction

dnph8jn4  于 2023-04-28  发布在  Swift
关注(0)|答案(3)|浏览(148)

我有以下代码来移动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。只是这个1SKSpriteNode的运动

hc8w905p

hc8w905p1#

你应该运行一个带有key的操作:

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

然后,使用action的speed属性暂停它:

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

        action.speed = 0       
}

或取消暂停:

action.speed = 1
brjng4g3

brjng4g32#

@Whirlwind的答案的另一种选择是,如果你有一堆需要暂停的动作,这些动作不在一个组中,而不仅仅是移动,那就是暂停节点本身。所有SKNode都有一个与之关联的paused属性。
例如square.paused = true

**更新:**此属性现在为isPaused。此更改的示例如下所示:

square.isPaused = true
ghhkc1vu

ghhkc1vu3#

SKNode.paused已重命名为SKNode.isPaused
您应该能够执行以下操作:
暂停动画:

square.isPaused = true

重新启动动画:

square.isPaused = false

相关问题