目次
カエルが跳ねているアニメーション
SKActionのanimateを使うとテキスチャを切り替えてアニメーションを作ることができる。
例えば、カエルが跳ねるアニメーションを作るには2枚の画像を以下のようにすれば良い。
let frogFrames:[SKTexture] = [ textureAtlas.textureNamed("frog"), textureAtlas.textureNamed("frog_move") ] let frogAction = SKAction.animate(with: frogFrames, timePerFrame: 0.14)
このままだと一回だけ跳ねて終わってしまう。
永久的に跳ねさせておきたい場合には以下のようにSKActionのrepeatForeverを使う。
bounceAnimation = SKAction.repeatForever(frogAction)
これで繰り返しその場で跳ねる。
カエルを左右に動かす
では、跳ねているカエルを動かすにはどうすれば良いだろうか。
左に動いて右に動いて、、、を行う場合は以下のようにSKActionのsequenceを使う。
let flipLeft = SKAction.scaleX(to: 1, duration: 0.05) let moveLeft = SKAction.move(by: CGVector(dx: -300, dy: 0), duration: 6) let flipRight = SKAction.scaleX(to: -1, duration: 0.05) let moveRight = SKAction.move(by: CGVector(dx: 300, dy: 0), duration: 6) movingAnimation = SKAction.repeatForever(SKAction.sequence([flipLeft,moveLeft,flipRight,moveRight]))
repeatForeverを使えば、永久的に右へ、左へ動き続けることになる。
跳ねている状態で左右に動かすには?
私は当初、SKActionのsequenceの中に、2つとも入れてしまえば良いと考えた。
SKAction.sequence([bounceAnimation,movingAnimation])
しかし、これでは最初のbounceAnimationのみ実行されることになる。
何故なら、bounceAnimatonはforeverになっているから永久的に実行され、次のアニメーションには進まないからだ。
解決策は、SKActionのgroupを使うこと。
bounceAndMoving = SKAction.group([bounceAnimation,movingAnimation])
これで両方のアニメーションがグループ化され、跳ねながら移動することが可能になった。