【swift】 SpriteKitでアニメーションを作る
swiftのSpriteKitというゲームフレームワークを使って
モンスターのアニメーションを作っていきたいと思います。
swift2.0になり書き方も変わりました。
他のサイトの情報を引用してもエラーが出たので自分で書き直しました。
今回は、この動きを出したいと思います。
素材は、王国興亡記のモンスターを使用させていただきました。
大まかな順序は以下の通りです。
- アニメーション用の配列などの初期設定
- 画像の欲しい動作部分を切り分けて、1の配列に入れる
- アニメーション設定する
1. アニメーション用の配列などの初期設定
//モンスターの画像 let monsterImage = SKTexture.init(imageNamed: "monster001.png") //アニメーションにするための画像たちを入れる配列 var textures:[SKTexture] = []
monster001.pngは下の画像です。
2. 画像の欲しい動作部分を切り分けて、1の配列に入れる
//monster001.pngの一番上の行が下向きのため let i:Int = 3 for j in 0..<3 { let x = (CGFloat(j) * CGFloat(size)) / CGFloat(monsterImage.size().width) let y = (CGFloat(i) * CGFloat(size)) / CGFloat(monsterImage.size().height) let w = CGFloat(size) / CGFloat(monsterImage.size().width) let h = CGFloat(size) / CGFloat(monsterImage.size().height) //指定したサイズをtextureとして切り取る let texture = SKTexture.init(rect: CGRectMake(x, y, w, h), inTexture: monsterImage) //配列に入れる textures.append(texture) }
3. アニメーション設定する
//最初の画像を設定(今回は配列の一番最初の画像) let monster = SKSpriteNode.init(texture: textures.first) //モンスターの位置設定 monster.position = CGPointMake(0,0) //モンスターが歩く動作をアニメーションで永続的に回す let walk = SKAction.animateWithTextures(textures, timePerFrame: 0.2) let forever = SKAction.repeatActionForever(walk) monster.runAction(forever) //ゲームにモンスターを追加 self.addChild(monster)
配列の中の型指定を知ってなかったのでちょっと面倒でした。
以上です。