公開日:2023/05/25  更新日:2023/05/25

Unityのアニメーションの基本

 Unityには様々なアニメーション機能が搭載されている。
 ゲームオブジェクト、コンポーメント、シーンビュー、ゲームビュー、オブジェクトの親子関係についてわからない場合は以下の記事で確認するのがおすすめ。
ゲームオブジェクトとは
コンポーメントとは
シーンビューの操作
ゲームビューの操作
オブジェクトの親子関係
 アニメーションの基本について紹介していく。


Unityのアニメーション目次

アニメーションの構成要素
AnimationClipの作成
AnimatorControllerとAnimator
AnimatorControllerの操作
目次にもどる

アニメーションの構成要素

 Unityのアニメーションが再生される際には3つの要素が関わっている。

AnimationClip
 アニメーションを構成したファイル。

AnimatorController
 条件により再生するAnimationClipを切り替える役割を持つ。例えばキャラが移動していない時にはキャラが静止しているAnimationClipを再生し、キャラが移動し始めたら走るAnimationClipを再生するといったことができる。

Animator
 どのAnimatorControllerを呼び出すかを決めるコンポーネント。

目次にもどる

AnimationClipの作成

 AnimationClipの作成方法を紹介していく。

 今回はゲームオブジェクトのcubeを作成して、そのAnimationClipを作っていこうと思う。

 ヒエラルキー欄のcubeを選択した状態でWindows→Animation→Animationのように選択する。


 すると以下の画面となるのでCreateを選択する。


 保存場所を決める。例えばプロジェクトビューのAssetsなどに「Animation」のようなフォルダを作成して保存するのをおすすめする。名前は好きに決めていいが、今回はAnimationkihonとつけた。

 「Add Property」を選択し、Cubeのコンポーネントからアニメーションで変化させるものを選ぶ。
 今回はTransform→Scaleのように選択し、アニメーションによってcubeの大きさを変える手順を説明していく。

 cube:Scaleの左の矢印を開くと、X方向、Y方向、Z方向の大きさが表示される。

 右側に表示されているのはタイムラインである。白の線が現在のScaleの数値となる。最初は白の線が0:00のところにあるので再生開始時の値が左側にあるcube:Scaleに表示されている。

 白の◇マークはキーフレームというもので、その時間に達するまでにScaleの数値がどうなっているかを示す。
 タイムラインの白線はクリックすることで動かすことができる。白線を好きな位置で止めて、左側のcube:ScaleのYの値を例えば3に増やす。このように数値を変化させると新たなキーフレームを追加できる。
 あるいは白線を任意の位置で止めて、以下のボタンを選択してもキーフレームを追加することができる(Deleteボタンで消すこともできる)。

 タイムラインの右上を見ると1:00秒がキーフレームを配置できる最大時間となっていることがわかる。
 これでは少し短いと感じたら伸ばすこともできる。キーフレームをクリックしたまま右側にドラッグして適当な場所で放すと、以下のようになる。

 キーフレームを配置できる最大時間を伸ばせ、より長いアニメーションを作ることができる。

 cube:ScaleのYの値は開始時は1だったが、1秒と30フレームのところにキーフレームを配置してYの値を3にしてみた。

 この状態で再生するとcubeが縦に1秒30フレームかけてだんだん長くなっていくアニメーションを作成することができた。
目次にもどる

AnimatorControllerとAnimator

 先ほど、cubeのAnimationClipを作成したフォルダに以下のようなファイルができているはずだ。以下の画像の右にあるファイルがcubeのAnimatorControllerである。


 次にヒエラルキー欄のcubeを選択してみよう。インスペクター欄にはAnimatorのコンポーネントがある。今回の方法でAnimationClipを作成した場合はAnimatorControllerとAnimatorは自動的に追加されているのだ。

 AnimatorのコンポーネントではControllerの項目にcubeとある。これはcubeのAnimatorControllerを指定している。
 続いてcubeのAnimatorControllerをダブルクリックしてみよう。以下のような画面が開く。

 最初から「Animationkihon」と呼ばれる四角形(後述するがステートという)があるのがわかる。「Animationkihon」のAnimationClipを再生する役割となっている。cubeのAnimatorがAnimatorControllerを指定して動かしAnimationClipが再生される仕組みになっていることがわかる。
目次にもどる

AnimatorControllerの操作

 AnimatorControllerで何ができるのかを見ていく。
 cubeのAnimatorControllerをダブルクリックして開こう。
 以下の部分で右クリックしてCreate State→Emptyと選択すると新しい四角形ができる。

四角形をステートと呼ぶ。選択するとインスペクター欄が表示される。Motionの部分で再生するAnimationClipを指定することができる(右の二重丸を押すと検索が可能)。

 今回はkousokuという名前のステートを作ってみた。

 kousokuのステートのインスペクター欄のMotionで「Animationkihon」を選ぶ。最初に作ったステートと同じAnimationClipだが変化をつけるために、Speedを1→5にしてみよう。

 続いてAnimationkihonのステートのところで右クリックし「Make Transtion」を選択する。

 すると→が出てマウスで動かせるので、「kaiten」のステートのところまで矢印を持っていき、左クリックを押すとAnimationkihon→kousokuのように矢印が固定される。

 この矢印は遷移(移り変わり)の設定である。何かの条件を満たしたら矢印の先のステートに移ることができる。
 矢印を選択してインスペクター欄を見てみよう。
 Has Exit Timeという項目がある。

 Has Exit Timeに✓が入っているなら、アニメーション再生回数を指定し条件を満たしたら矢印の先の次のステートに移ることができる。
 Has Exit Timeに✓が入っていないなら、Conditionsで矢印の先の次のステートへ移る条件を決められる。例えばゲームオブジェクトの移動速度がある値以上の時・・・といった条件を決められ非常に便利だ。ただプログラミングの要素が入ってくるので別記事で紹介しようと思う。

 Has Exit Timeに✓を入れた時の操作を今回は紹介していく。
 Has Exit Timeの下にSettingsと書いてあるが、そこの左にある矢印をクリックすると以下の画面が開く。

 特に重要な項目の説明は以下の通り。
Exit Time
 アニメーションを実行する回数を指定可能。2と入力すればステートを4回実行すれば次のステートに移る。

Fixed DurationとTransition Duration
 Durationはアニメーションが切り替わるのにかかる時間を示す。
 Fixed Durationに✓が入っているなら下の項目がTransition Duration(s)になる。sとは秒を示す。Transition Duration(s)に1を入れれば1秒かけて次のステートのアニメーションに切り替わる。
 Fixed Durationに✓が入っていないなら、下の項目がTransition Duration(%)になる。10に設定した場合、遷移前アニメーションの長さの10%の時間をかけて次にアニメーションに切り替わる。

Transition Offset
 アニメーションの開始位置をずらすことができる。数字を変えてみて下のタイムラインを見れば意味がわかりやすい。

Interruption Source
 アニメーションの中断を設定可能。デフォルトではNoneが選択されており何も中断されない。Current Stateを選択すると遷移前のアニメーション再生時に中断される。Next Stateだと遷移先アニメーション再生時に中断される。

 今回はExit Timeに4を入れてみた。
 この状態で再生ボタンを押すとAnimationkihonのステートが4回再生された後、kousokuのステートのアニメーションが再生される。アニメーションの内容は同じだが、先ほどkousokuのステートをSpeedを1→5にしている。そのため高速で再生される。


 基本的にはアセットストアなどで素材をダウンロードするとAnimationClipやAnimatorControllerなどが既に作成されており、後はAnimatorコンポーネントでの呼び出しやスクリプト(C#のプログラミング使用)などで調整するだけで運用できることも多い。AnimationClipやAnimatorControllerがどういう仕組みで動いているのか知っておけば調整作業を行う大きな助けになる。
Unityの基礎まとめへ戻る

page top