sprite-kit
SKAction
サーチ…
シンプルなSKActionを作成して実行する
非常に簡単な例は、SKSpriteNodeをフェードアウトすることです。
スイフトで:
let node = SKSpriteNode(imageNamed: "image")
let action = SKAction.fadeOutWithDuration(1.0)
node.runAction(action)
繰り返す一連のアクションの作成
時には、繰り返しまたはシーケンスでアクションを実行する必要がある場合があります。この例では、ノードを合計で3回フェードインおよびフェードインさせます。
スイフトで:
let node = SKSpriteNode(imageNamed: "image")
let actionFadeOut = SKAction.fadeOutWithDuration(1.0)
let actionFadeIn = SKAction.fadeInWithDuration(1.0)
let actionSequence = SKAction.sequence([actionFadeOut, actionFadeIn])
let actionRepeat = SKAction.repeatAction(actionSequence, count: 3)
node.runAction(actionRepeat)
SKActionでコードブロックを実行する
便利なケースの1つは、アクションにコードブロックを実行させることです。
スイフトで:
let node = SKSpriteNode(imageNamed: "image")
let actionBlock = SKAction.runBlock({
//Do what you want here
if let gameScene = node.scene as? GameScene {
gameScene.score += 5
}
})
node.runAction(actionBlock)
他の場所から開始または削除できる名前付きアクション。
ある時点で特定のノードでアクションを開始または削除したい場合があります。たとえば、ユーザーが画面をタップしたときに移動するオブジェクトを停止することができます。これは、ノードに複数のアクションがあり、そのうちの1つにのみアクセスしたい場合に非常に役立ちます。
let move = SKAction.moveTo(x: 200, duration: 2)
object.run(move, withKey: "moveX")
ここでは、アクションmove
のキー "moveX"をクラスの別の部分で後でアクセスするために設定します。
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
object.removeAction(forKey: "moveX")
}
ユーザーが画面にタッチすると、アクションが削除され、オブジェクトの移動が停止します。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow