アプリつくってみっか!趣味でiPhone/Androidアプリを開発し、日々勉強した事を書いています。オープンワールド系レースゲームをUnityで開発中です。この広告は、90日以上更新していないブログに表示しています。2013-04-23【cocos2d】CCAnimationでスプライトをアニメーションしてみたcocos2d今回はキンバエのキャラクターを作りアニメーションをつけてみました。アニメーションに使用するハエの絵を描きます。Paintというソフトを使っています。38回この商品を含むブログを見る完成したのがこれらの3枚の絵です。原寸の72x72ピクセルだと小さすぎるのでサイズは各辺4倍の288x288ピクセルで描きました。胴体と羽の部分はレイヤーを分けて合成しています。羽は閉じた状態の絵だけ描いて、開いた状態、中間の状態の絵は画像を閉じた状態の左右の羽を回転させて作りました。胴体と各羽を合成した状態でpngファイルとして書き出します。fly1.pngとfly3.pngは全く同じ絵ですがアニメーションの都合上ファイル名を分ける必要があるので別ファイルとします。fly0.pngfly1.pngfly2.pngfly3.png次に、これらの4枚の絵をTexturePackerで1枚のテクスチャアトラスにまとめます。やり方はこちらのポストをご参照ください。こちらがテクスチャアトラスとしてまとめられた絵です。alias"というチェックボックスをチェックしておくと、同じ絵(この例の場合、中間の羽の位置の絵)は自動的に1つにまとめられ、メモリ使用量を節約してくれます。同じ絵が繰り返し現れるようなアニメーションでは非常に有効な機能だと思います。TexturePackerで作成した.plistファイルと.pngファイルをプロジェクトにコピーしたら早速プログラム開始です。fly0.pngなどの個別の絵のファイルはプロジェクトに加える必要はありません。スプライトをアニメーションさせるコードはCCSpriteを継承して、当たり判定用の情報を追加したCollisionSpriteクラスに実装します。このメソッドでは受け取ったファイル名(の一部)に連番用の数字と拡張子を加え、スプライトフレームキャッシュからそのファイル名に対応するスプライトフレームを取り出します。取り出したスプライトフレームは順にNSMutabuleArrayに追加され、そのArrayとパラメーターとして受け取ったアニメーションのフレーム間隔をanimationWithSpriteFrames:delay:メソッドに渡してCCAnimationオブジェクトを生成し、呼び出し元に戻します。2という本に書かれていたルーチンを使わせていただきました。delay:delay];}そして、先ほどのメソッドの呼び出し元が、こちらのやたらと引数が多くなってしまったinitWithPositionで始まるメソッドです。こちらは敵キャラクターのオブジェクトであるMyEnemyクラスに実装されています。MyEnemyクラスは前述のCollisionSpriteのサブクラスです。delayの3個の引数を追加しました。self;}アニメーションに関する部分は次の4行です。CCRepeatForeverのアクションを作り忘れると1回アニメーションして止まってしまいます。私はここでハマりました。runAction:repeat];で、上のメソッドを呼び出すのがこちら。nameにはNSStringオブジェクトのflyを渡します。この名前はテクスチャーに含まれているファイル名のベース部分です。animCountはアニメーションが何枚のフレームから成っているかの指定です。delay:0.03];}それでは、今回の実行画面の動画をご覧ください。Tumblr広告を非表示にする関連記事2014-03-23主人公の絵が完成。ゲームに組み込んでみた主人公の女子高生の全ての動きの絵が完成しましたので、ゲーム...2013-06-09【cocos2d】addChildのzパラメーターでスプライトを順序よく重ね合わせるBeeClusterの最終面では蜂の巣から幼虫が飛び出してくるという...2013-05-30【cocos2d】バッタがジャンプする動きを実装。今回はBeeClusterの4面にバッタを出してみました。イマ...2013-05-08【cocos2d】仲間キャラを実装してみた前回作成したタップ検出機能を使って味方キャラをを仲間に入れ...2013-05-06【cocos2d】1面ボスを作ってみた。CCActionで複雑なパターンを実装1面のボスキャラとしてクワガタを作りました。アプリこの商品を含むブログを見るプロフィールid:takujidev個人でiPhone/Androidゲームを開発しています。ミツバチ軍団vs昆虫軍団の縦スクロールシューティング。