2016-01-04 45 views
6

SKSpriteNodeを移動する次のコードがあります。SwiftでSpritekitでSKActionを一時停止

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

答えて

5

のジャスト動きあなたがキーでアクションを実行する必要があります、それを一時停止するには、アクションのスピードプロパティを使用し、その後

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

を:

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

     action.speed = 0  
} 

またはそれを一時停止を解除するには:

action.speed = 1 
+0

ありがとうwhirlwind!完璧に動作します。私がSKSpriteNodesのグループを持っていれば、そのうち5つを言うことができます。アクションの速度プロパティを使用してそれらをすべて停止する最善の方法は何ですか? SKSpriteNodesのうちの1つを停止するだけです:) – Questions

+0

@Questionsまず、すべての正方形ノードに名前をつけて(例えば、square.name = "square")、[enumerateChildNodesWithName](http ://stackoverflow.com/q/24213436/3402095)メソッドを使用して、その名前で各四角形にアクセスし、キー "移動"に関連するアクションを変更します。 – Whirlwind

6

@Whirlwindの答えの代わりに、あなたにはたくさんのアクションがある場合移動だけでなくグループ内に休止する必要がある場合、ノード自体を一時停止することです。すべてのSKNodeには、pausedというプロパティが関連付けられています。

Ex。 square.paused = true

+0

代替案ありがとうございます。両方の方法が働いた:D – Questions

関連する問題