【Unity2D】移動時のアニメーターコントローラーを設定しよう:準備編

Unity2D

Unity2D ARPG

こんにちは。なおキーヌです。

ブログ毎日更新は312日目になります。

前回「【Unity2D】斜め移動できるようにしよう」にてキー配列を作成しました。

今回はアニメーションとアニメーターコントローラーについて知りましょう。

正直うろ覚えなので2回に分けてアニメーション実装を行います。

知識を確立させるためにも覚えたことを確実にアウトプットするためゆえ、スローペースなのをお許しください。

Unity2DでARPG作成、第5回目始めましょう。

  1. アニメーターとアニメーションの違いを簡単に知ろう
  2. アニメーターコントローラーを作ろう
  3. アニメーションファイルを作ってアニメーターに設定しよう
  4. スクリプトからアニメーションの制御方法

アニメーターとアニメーションの違いを簡単に知ろう {{id="post-head-01"}}

Unityにはアニメーターコントローラーとアニメーションという仕組みがあります。

簡単に言うと

アニメーターコントローラー:アニメーションファイルを制御する管理者

アニメーション:一連のアニメーションを記した手順書

アニメーションファイルはその名の通りアニメーションの手順を記したファイルです。

アニメーターコントローラーはそのアニメーションからアニメーションの遷移だったり、
条件によって遷移を分岐させたり色々出来る制御管理用ファイルです。

Unityを始めたばかりのころはこの辺で混乱してしまう人もいるのではないでしょうか。

アニメーターコントローラーを作ろう {{id="post-head-02"}}

まずはアニメーションの遷移をコントロールするためのアニメーターコントローラーを作りましょう。

Projectで右クリック→Create→「Animator Controller」を選択すると作成できます。

私のディレクトリ構造は「Assets」→「Animate」→「Player」としています。

その中にPlayerというAnimator Controller(以下アニメーター)を作りました。

アニメーションファイルも各対応するキャラクターごとにディレクトリの中に格納していきます。

アニメーターファイルをダブルクリックすると以下のような画面になります。

今は何もないのでAnyStateとEntryだけですね。

ここにアニメーションファイルをD&Dで入れて遷移の仕組みを作っていくという感じです。

アニメーションファイルを作ってアニメーターに設定しよう {{id="post-head-03"}}

次はドット絵をアニメさせたいので、アニメーションファイルを作っていきましょう。

動きのあるドット絵は各自ご用意ください。

用意できない人は四角に色を付けて数字を記述する絵でも大丈夫です。

絵がパラパラ漫画のように動いてくれればドット絵が手元になくても、
アニメーションを設定した後から用意した画像に差し替えるだけで大丈夫です。

ひとまず下向きの歩行アニメを作るのに、アニメーションのファイル名は「Player_DownWalk」としました。

名前はファイル名を見ただけで何をしているのかわかりやすいようにしておくと管理が楽になります。

ファイルを作成したらダブルクリックでアニメーション管理タブが自動的にアクティブになります。

実はこのままだと何も設定できないので、Playerオブジェクトにアニメーターをコンポーネントとして設定します。

ヒエラルキーでPlayerオブジェクトを選択し、アニメーターファイルをコンポーネントにD&Dしてください。

そうするとアニメーションが設定できるようになっています。

分割したスプライトをD&Dでタイムラインに設定

動画作りをしたことがある人ならすぐに理解できると思いますが、
タイムラインという場所にスプライトを設定していきます。

このように設定して再生ボタンを押すとアニメーションしてくれます。

Sampleの数値を少なくするとゆっくり動いてくれるので調整してみてください。

60はちょっと早すぎるので私は12ぐらいに落としました。

歩行アニメーションの場合は自然なループになるように作ります。

アニメーターでデフォルトアニメーションを設定

アニメーションファイルを構築したら忘れずに保存しましょう。

そしてアニメーターのタブに戻り先ほど作った下歩行アニメファイルをD&Dでアニメーターに実装します。

恐らく初期の状態でアニメーションファイルを入れると自動的にオレンジ色になりEntryから矢印が付きます。

これがゲーム実行時に動くデフォルトアニメーション設定です。

複数のアニメーションがある場合、どれをデフォルトにするかは選択できます。

とりあえずこのままゲームを実行してみましょう。

……どうでしょうか?アニメーションが1回実行されたら止まったと思います。

それもそのはずで、アニメーションにループ設定をしていないからですね。

アニメーションファイルを選択して「Loop Time」にチェックを入れたらループするようになります。

スクリプトからアニメーションの制御方法 {{id="post-head-04"}}

これでアニメーションの作り方は一通り完了しました。

しかし動いていないのにアニメーションしているのも変ですよね。

止まっている時は何も動かないか、止まっている時の待機アニメーションにしたいところです。

今回はまだ下歩行アニメしか作ってないので、下キーを押された時にだけ歩行アニメーションをさせたいですね。

これは基本的にスクリプトで制御するのが楽ちんです。

例えば、下キーがキー配列の0個目に入っていたら変数を1にする。

アニメーターはその変数が1の時は下歩行アニメに遷移させ、1の状態であれば下歩行アニメを続けるといった感じです。

キー配列がなくなったら変数を0にするとアニメーター側も下歩行アニメから待機に戻してくれます。

次回はスクリプトでアニメーションの遷移を制御してみましょう。

それでは。