FC2ブログ

記事一覧

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサーリンク

Unity Animator コンポーネント




今回は2Dゲームのアニメーションについてです。
UnityでGIFアニメみたいな感じで画像を切り替えて表示できるんですね。

ただアニメーションさせるだけなら簡単なんですが、アニメーション間の遷移等
やってみようと思います。

では早速
アニメーションさせるために画像(2Dゲームではスプライトと呼ばれるものです)を用意しましょう。
手元になければこちらのイカメンくんをご利用ください。

スプライトをProjectビューにドラッグ&ドロップして追加。
デフォルトのAssets(アセット、ゲームの材料になるもの)がありますが
その中にSprite(スプライト)用のフォルダを作っておくといいかもしれません。
※フォルダやファイルを作成するときには日本語を使わないように気を付けましょう

アセットに画像を追加できたら、それらをヒエラルキービューにドラッグ&ドロップで追加します。
このときにアニメーションファイルが作られますから、アニメーションひとまとまり毎にまとめて作成しましょう。
(例えば右向き歩き、左向き歩きは別々にアニメーションファイルを作成しなくてはいけません。)

画像で補足

Unity 161022 1 

この画像の例だと右向きのアニメーションが作成されます。
(画像を一枚選択し忘れていますね、失礼!)


ヒエラルキービューに画像を複数枚ドロップすると、Create New Animation というウィンドウが開きますね。
新しくアニメーション用のフォルダを作成しておいて、そこに保存しましょう。
(ウィンドウ内で右クリック→新規作成→フォルダ で作成できます)

保存する時の名前はなんでもいいですが、区別できるようにしておきましょう。
左向き歩行なら test_left 右向きなら test_right 等・・・


この状態でゲームを実行するときちんとアニメーションされているはずです。
デフォルトだと動きが速すぎたりするかもしれませんね。

アニメーションの設定はUnityのAnimatorビューというところで行います。

画像補足
Unity 161022 2 


Animatorビューの四角(State、状態)をクリックしてインスペクタを開きます。

Unity 161022 3 

そして画像の通り、Speedの値を変更すればいいだけです。
アニメーションスピードの変更は簡単ですね。


次にアニメーションを遷移(切り替える)させる方法です。
ヒエラルキービューに表示されている不要なアニメーションは削除してしまって構いません。
正面を向いているアニメーションだけ残しておきましょう。(作成していなければ作成しておく)
※アニメーションファイルの実体は先程の作成時、Assetsの中に保存されています


では残しておいたアニメーションのAnimatorビューで右クリックして
CreateState→Empty で新しいアニメーション状態を作成します。
新しく作成したState(状態)をクリックしてインスペクタを開き、名前を変更しておきましょう。
とりあえず名前は left にしておきます。

ここまで準備できたらモーションファイルを設定します。
冒頭で作成しておいたアニメーションファイルのうち、左向きになっているものを使います。
State leftのインスペクタから Motion の右のボタンをクリックして
左向きのアニメーションを選択しましょう。
Assetsからドラッグ&ドロップで指定してもOKです。
(先程の画像にある、Speedの上の項目です)



left という State に左向き歩行のアニメーションが設定されました。
あとは正面からStateを遷移させるだけです。

Animatorビューのオレンジ色の四角を右クリックして Make Transitionを選択します。
すると矢印が出るので、State left(自分で作った四角)をクリックします。

同じことを次は反対から、leftを右クリックして
Make Transition → デフォルトState(オレンジ色のものです)をクリックです。



これで二つのStateがつながりました。

Animatorビューの左側、Parameters の+ボタンをクリックします。
メニューが出ますから、Boolを選択。


New Boolとなっている名前部分をクリックで変更できますから
left とでも設定しておきましょう。

画像補足
Unity 161022 5 

これはアニメーションの遷移させる条件に使用するパラメーターです。
(Boolというのは以前の記事でも出てきました、true , false の二つの値をもちます。)


作成したパラメーターを実際に設定します。

まずはデフォルトStateから伸びている矢印をクリック。
表示されたインスペクタのConditionsの+ボタンをクリックしてパラメーターを設定します。


デフォルト状態から何かアクションがあった時にアニメーションを遷移させたいので
Bool が trueになった時、という設定にしておきます。

画像補足
Unity 161022 6 


反対に State leftから伸びている矢印をクリックして、先程trueだった部分をfalseに設定します。
それ以外は同じように進めてください。



あとはスクリプトでちょちょいとするだけです!


C#スクリプトを作成し、例えばこんな風に書きます。

Unity 161022 4 

中身を見ていきます。

まずはAnimatorコンポーネントを取得。
GetComponent・・・の部分はこちらの記事で。


Update()内を見てみます。

if(Input.GetKey("a"))


というのは、aキーが入力されたら~という条件です。
aキーが入力された時に処理される内容は

anime.SetBool("left" , true);
transform...... //ここは移動の処理!解説は省略します。


animeというのはAnimatorコンポーネントを取得している変数です。

SetBoolという関数でAnimatorをスクリプトから制御できます。
"left" をtrueに設定していますから
先程パラメーターで設定した(矢印を伸ばして設定した部分です)条件が満たされます。
結果、アニメーションが遷移するということですね。

else anime.SetBool("left" , false);

ここはもうわかるかもしれませんね。

elseというのは前のifの条件が満たされなかった時
つまりaキーが入力されていない時に処理される内容を書きます。

left が falseに設定されて、アニメーションが元に戻るという処理です。
(設定した矢印でいうと、leftからデフォルトに戻る矢印です)


実行してみるとaキーの入力、未入力でアニメーションが遷移します。
右向きのアニメーションを追加するときも同じです。
その場合、leftからも矢印を伸ばしたり等、工夫をするといいかもしれません。


まだ細かく書いておきたいことがあるのですが
長くなってしまったのでまた次回ということで!

ありがとうございました~!










スポンサーサイト

スポンサーリンク

コメント

コメントの投稿

非公開コメント

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。