今回は『Cocos Studio 2』でアニメーションを作成する方法です。
『Cocos』にはノード(シーン、レイヤー、スプライト等)に、移動・回転・拡大縮小・変形・色や透明度を変化などの効果を加える事が出来る『Actionクラス』が用意されています。これらの効果を組み合わせることで、様々なアニメーションを作成することが出来ます。『Actionクラス』のコードの書き方については『アクションの設定:Cocos2d-x v3.7(JavaScript) - モーリーのメモ』で取り扱っていますので、こちらもご参照下さい。
他にもまだこのブログでは取り扱ってはいませんが、『Cocos』には複数の画像をパラパラ漫画のように切り替えてアニメーションを作成する『Animationクラス』も用意されています。
各クラスの中身を知ることで、どういったことが出来るのか把握したり、柔軟な実装方法を得ることが出来るのですが、せっかく『Cocos Studio 2』というビジュアルツールがあるので、『Cocos Studio 2』でアニメーションを作成する方法を調べました。『Cocos Studio 2』はデフォルトの画面構成で『Animation』ウインドウが表示されていて、気になりますし。
アプリとして実行するためには、『Cocos Studio2』でアニメーションを作成し、『Cocos Code IDE』でコードを書いて、タッチ等のイベントと合わせて組み立てる必要があります。今回は、『Cocos Studio2』でアニメーションを作成するところまでを書きます。『Cocos Code IDE』での作業は、次回のブログに書くことにします。
Cocos Studio 2によるアニメーションの作成
基本的な作成方法について
『Cocos Studio 2』では、各ノードに、フレーム単位で動きや変化を設定することでアニメーションを作成します。
全てのフレームに動きを設定するわけではなく、あるノード対して、0フレーム目に『X:100, Y:100』の位置、30フレーム目に『X:200, Y:200』の位置、と設定すると0〜30フレームの間の動きを自動で補間してくれます。
この場合の『0フレーム目』と『30フレーム目』を『キーフレーム』と呼びます。
『Animationウインドウ』で『キーフレーム』を設定し、『Propertiesウインドウ』でプロパティを設定するというのが基本的な作成方法になります。
フレームレート
フレームレートは1秒間に切り替えるフレームの数です。『Animationウインドウ』の下記の部分で設定します。
『Animationウインドウ』は、横にフレームの目盛りが振ってありますが、時間の経過は設定したフレームレートとフレーム数から把握する必要があります。
複数のアニメーションの作成
1つのファイル(シーン、レイヤー、ノード)に、複数のアニメーションを作成する場合は、1つ目のアニメーションは『0〜30』フレーム、2つ目のアニメーションは『30〜90』フレームといったように、区分を分けて作成します。各区分のアニメーションに名前を付けることも出来ます。
余談ですが、私は最初、アニメーションを追加するとタイムラインが別に作られるのかと思っていました。1つのファイルにタイムラインは1つのようです。
アニメーションの追加
をクリックし、『Name』、『Start Frame』、『End Frame』を設定します。
アニメーションの管理・修正
をクリックすると、作成したアニメーションがリスト表示されます。
リストの『Name』、『Start Frame』、『End Frame』をダブルクリックすると、内容を修正することが出来ます。
アニメーションの削除
アニメーションを消す場合は、左下の『−』ボタンをクリックします。
作成中のアニメーションの確認
『Animationウインドウ』の左上にある操作パネルで、作成中のアニメーションの動きを確認することが出来ます。
- 上側のボタンの機能は、左から次のようになっています。
- 選択中のアニメーションの最初のフレームに移動
- 1フレーム戻る
- 選択中のアニメーションを再生する
- 1フレーム進める
- 選択中のアニメーションの最後のフレームに移動
- ループ再生と1回再生の切り替え
- 下側のドロップダウンリストで、再生するアニメーションを選択します。
その他の操作は、作成例の中で説明します。
アニメーションの作成例
作成するアニメーション
下記のアニメーションを作成します。
・『Title_In』:タイトルとスタートボタンを表示
・『Tile』:スタートボタンを点滅
・『Tile_Out』:タイトルとスタートボタンを隠す
・『Chara_In』:キャラクターを表示
・『Chara』:キャラクターに簡単な動きを付ける
プロジェクトの新規作成
新規プロジェクトから作成します。
- 『Cocos Studio2』を起動
- アプリケーションメニューの『File』-『New Project...』をクリック
- 開いたウィンドウで『All』の『Cocos Project』を選択し、『Next』をクリック
- 次のように設定を行った後、『Finished』をクリック
- 『Project Name(プロジェクト名)』:HelloCocos(任意のプロジェクト名)
- 『Orientation(画面の向き)』:『縦向きの画面のアイコン』を選択
- 『Engine Version(cocos2d-xのバージョン)』:『cocos2d-x-3.7』を選択
- 『Project Language(使用するプログラミング言語)』:『JavaScript』を選択
使用する画像
それぞれの画像を右クリックして、画像の右に書いた名前をつけて保存して下さい。
プロジェクトへの画像の追加
- 『Cocos Studio2』の画面左下の『Resourcesウインドウ』内で右クリックし、『Import Resources...』をクリック
- 先ほど保存した5枚の画像を選択し、『Open』をクリック
タイトルとスタートボタンの作成
タイトル用スプライト
- 画面左上の『Objectsウインドウ』の『Basic Objects』にある『Sprite』を、『Canvas(アプリの画面を作成するウインドウ)』へドラッグアンドドロップ
- 画面右の『Propertiesウインドウ』で『Sprite』のプロパティを下記のように変更
*書いていないパラメータは変更していません。- 『Name』:SpriteTitle
- 『Feature』
- 『Image Resource』:title.png(Resourcesウインドウからへドラッグアンドドロップして登録)
スタートボタン用スプライト
- 『Sprite』を、『Canvas(アプリの画面を作成するウインドウ)』へドラッグアンドドロップ
- 『Propertiesウインドウ』で『Sprite』のプロパティを下記のように変更
- 『Name』:SpriteStart
- 『Position & Size』
- 『Position』:X 320、Y 420
- 『Feature』
- 『Image Resource』:start.png
この図ではスタートボタン用スプライトを配置し、画像ファイルを設定しています。
『Title_In』アニメーションの作成
タイトル用スプライト
- 『Animationウインドウ』の左上にある『AutoRecord Frame』にチェックを入れる
AutoRecord Frame』にチェックを入れた状態でノードのプロパティを変更すると、現在のフレームの関連する項目に、自動でキーフレームが追加されるようになります。 - 『Animationウインドウ』の『SpriteTitle』の横のをクリックし、隠れていた項目を表示
- 『SpriteTitle』の行の『0フレーム目』をクリック
- 『Properties』ウインドウで、下記のように設定
- 『Position & Size』
- 『Position(位置)』:X 320、Y 400
- 『General』
- 『Scale(拡大縮小)』:X 200、Y 200
- 『Rotation(回転角度)』:-45
- 『Opacity(不透明度)』:0
- 『Position & Size』
- 『SpriteTitle』の行の『30フレーム目』をクリック
- 『Properties』ウインドウで、下記のように設定
- 『Position & Size』
- 『Position』:X 320、Y 540
- 『General』
- 『Scale』:X 100、Y 100
- 『Rotation』:-5
- 『Opacity』:100
- 『Position & Size』
- 再度『SpriteTitle』の行の『0フレーム目』をクリック
- 『Animationウインドウ』の右端にある『Frame Curve Settings』で『Quad_EaseIn』を選択
『0フレーム目』と『30フレーム目』を結んでいる線が矢印になります。
スタートボタン用スプライト
- 『Animationウインドウ』の『SpriteStart』の横のをクリックし、隠れていた項目を表示
- 『SpriteStart』の行の『0フレーム目』をクリック
- 『Properties』ウインドウで、下記のように設定
- 『General』
- 『Scale』:X 100、Y 200
- 『Opacity』:0
- 『General』
- 『SpriteStart』の列の『30フレーム目』をクリック
- 『Properties』ウインドウで、下記のように設定
- 『General』
- 『Scale』:X 100、Y 100
- 『Opacity』:100
- 『General』
- 『SpriteStart』の行の『0フレーム目』をクリック
- 『Animationウインドウ』の右端にある『Frame Curve Settings』で『Quad_EaseIn』を選択
アニメーションに名前を付ける
- 『Animationウインドウ』の左上の(Add Animation)ボタンをクリック
- 『Add Animationウインドウ』で下記のように設定して『OK』をクリック
- 『Name』:Title_In
- 『Start Frame』:0
- 『End Frame』:30
『Title』アニメーションの作成
スタートボタン用スプライト
- 『SpriteStart』の『Opacity』の行の『75フレーム目』をクリック
- 『Add Frameボタン』をクリックし、キーフレームを追加
- 『SpriteStart』の行の『90フレーム目』をクリック
- 『Properties』ウインドウで、下記のように設定
- 『General』
- 『Opacity』:0
- 『General』
アニメーションに名前を付ける
- 『Animationウインドウ』の左上の(Add Animation)ボタンをクリック
- 『Add Animationウインドウ』で下記のように設定して『OK』をクリック
- 『Name』:Title
- 『Start Frame』:30
- 『End Frame』:90
『Title_Out』アニメーションの作成
タイトル用スプライト
- 『SpriteTitle』の『Opacity』行の『120フレーム目』をクリック
- 『Add Frameボタン』をクリックし、キーフレームを追加
- 『SpriteTitle』の『Scale』行の『120フレーム目』をクリック
- 『Add Frameボタン』をクリックし、キーフレームを追加
- 『SpriteTitle』の行の『150フレーム目』をクリック
- 『Properties』ウインドウで、下記のように設定
- 『General』
- 『Scale』:X 200、Y 200
- 『Opacity』:0
- 『General』
スタートボタン用スプライト
- 『SpriteStart』の行の『91フレーム目』をクリック
- 『Properties』ウインドウで、下記のように設定
- 『General』
- 『Opacity』:100
- 『General』
- 『SpriteStart』の『Scale』行の『91フレーム目』をクリック
- 『Add Frameボタン』をクリックし、キーフレームを追加
- 『SpriteStart』の行の『105フレーム目』をクリック
- 『Properties』ウインドウで、下記のように設定
- 『General』
- 『Scale』:X 100、Y 200
- 『Opacity』:0
- 『General』
アニメーションに名前を付ける
- 『Animationウインドウ』の左上の『Add Animationボタン』をクリック
- 『Add Animationウインドウ』で下記のように設定して『OK』をクリック
- 『Name』:Title_Out
- 『Start Frame』:91
- 『End Frame』:150
キャラクターの作成
- アプリケーションメニューの『File』-『New File...』をクリック
- 下記のように設定し、『New』ボタンをクリック
- 『Type』:『Node』
- 『File Name』:NodeChara
- 『Objectsウインドウ』の『Basic Objects』にある『Sprite』を、『Canvas』の『NodeChara.csd』へドラッグアンドドロップ
- 『Propertiesウインドウ』で『Sprite』のプロパティを下記のように変更
- 『Name』:SpriteChara
『Chara_In』アニメーションの設定
- 『Animationウインドウ』の『AutoRecord Frame』にチェックを入れる
- 『Animationウインドウ』の『SpriteChara』の横のをクリックし、隠れていた項目を表示
- 『SpriteChara』の行の『0フレーム目』をクリック
- 『Properties』ウインドウで、下記のように設定
- 『SpriteChara』の行の『90フレーム目』をクリック
- 『Properties』ウインドウで、下記のように設定
- 『Position & Size』
- 『Position』:X 0、Y -20
- 『Position & Size』
- 『SpriteChara』の行の『0フレーム目』をクリック
- 『Animationウインドウ』の右端にある『Frame Curve Settings』で『Bounce_EaseOut』を選択
アニメーションに名前を付ける
- 『Animationウインドウ』の左上の『Add Animationボタン』をクリック
- 『Add Animationウインドウ』で下記のように設定して『OK』をクリック
- 『Name』:Chara_In
- 『Start Frame』:0
- 『End Frame』:90
『Chara』アニメーションの作成
- 『SpriteChara』の行の『90フレーム目』をクリック
- 『Frame Curve Settings』で『Sin_EaseInOut』を選択
- 『SpriteChara』の行の『120フレーム目』をクリック
- 『Properties』ウインドウで、下記のように設定
- 『Position & Size』
- 『Position』:X 0、Y 20
- 『Position & Size』
- 『SpriteChara』の行の『130フレーム目』をクリック
- 『Properties』ウインドウで、下記のように設定
- 『SpriteChara』の行の『135フレーム目』をクリック
- 『Properties』ウインドウで、下記のように設定
- 『SpriteChara』の行の『145フレーム目』をクリック
- 『Properties』ウインドウで、下記のように設定
- 『SpriteChara』の行の『150フレーム目』をクリック
- 『Properties』ウインドウで、下記のように設定
- 『SpriteChara』の行の『120フレーム目』をクリック
- 『Frame Curve Settings』で『Sin_EaseInOut』を選択
アニメーションに名前を付ける
- 『Animationウインドウ』の左上の『Add Animationボタン』をクリック
- 『Add Animationウインドウ』で下記のように設定して『OK』をクリック
- 『Name』:Chara
- 『Start Frame』:90
- 『End Frame』:150
データの保存
- 『MainScene.csd』と『NodeChara.csd』ともに『Animationウインドウ』の現在のフレーム(青いライン)を『0フレーム目』の位置にする
- 実行時にシーン・ノードを呼び出した時に、保存した時のフレームの位置の状態で呼びだされます。
- 『MainScene.csd』と『NodeChara.csd』での作業を切り替えるには、『Canvas』の上部のタブをクリックするか、『Resourcesウインドウ』でファイルをダブルクリックします。
- アプリケーションメニューの『File』-『Save All』をクリック
補足
タイムラインの『Skew』、『Scale』、『Position』以外の項目
『Animationウインドウ』の各ノードの横のをクリックしてツリーを展開した時、デフォルトでは『Skew』と『Scale』と『Position』の行だけが表示されます。『Image Resource(画像)』や『Opacity(不透明度)』、『Color(色)』の行が無いので、それらのキーフレームが作成出来ません。これらの行は『AutoRecord Frame』にチェックをつけた状態で、そのプロパティを変更することで追加されます。
パラパラ漫画を作る別の方法
- 『Resourcesウインドウ』で使用する画像を全て選択した状態で、右クリックし、『Create Sprite Animation...』をクリック
- 開いたウインドウで、下記の設定行い、『OK』をクリック
- 『Start』:挿入開始位置
- 『Spacing』:画像を切り替える間隔
- 『Append the first frame as end frame』:チェックすると、最後のフレームとして1番目の画像のフレームが追加されます。
今回は、以上です。
あとがき
記事は長いですが、作業量はそんなに多くない思います。
慣れればアニメーションを全てコードで書くより、断然楽になりますね。