【Unity】Simple Animationを使ってAnimator Controllerなしでお手軽モーション再生

Animator Controllerなしでモーションが簡単に再生できるSimple Animationを使ってみます。

Unity2018.3.9

Simple Animationとは?

Unityの公式が作っているアニメーション再生ツールです。
公式ブログの内容によると以下の目的のために作られたようです。

  • Animator Controllerほどの機能が必要ない場合にお手軽に使えるように
  • Playable APIの実用的な実装例のために

以下がブログです。

blogs.unity3d.com

この記事ではSimpleAnimationの使い方を簡単にまとめてみます(使いそうなメソッドだけ)。

導入する

Unityへの導入はgithubからダウンロードするだけです。

github.com

Testフォルダはテストを使わないなら消してしまっていいようです。

コンポーネントをアタッチしてセットアップする

次にモデルがアニメーションするようにセットアップします。
まずモデルのGameObjectにSimpleAnimationをアタッチします。

f:id:halya_11:20190327232629p:plain

Animationフィールドにはデフォルトのアニメーションをセットします。
AnimationsのSizeを変えるとデフォルト以外のアニメーションをState名と共に設定できます。

f:id:halya_11:20190327232841p:plain

この状態で再生すればアニメーションWAIT01が再生されます。

f:id:halya_11:20190327233139g:plain

再生・停止・巻き戻し

次にスクリプトで単純な操作をしてみます。
まずは再生、停止、巻き戻しです。

SimpleAnimation simpleAnimation;

// デフォルトのクリップを再生する
simpleAnimation.Play();

// 特定のクリップを再生する
simpleAnimation.Play("Wait");

// アニメーションを停止する
simpleAnimation.Stop();

// 再生中のアニメーションを頭から流しなおす
simpleAnimation.Rewind();

説明はコメントの通りです。

状態遷移する

Play()を使うと再生中のアニメーションを変更できますが、
CrossFade()を使うとなめらかに遷移させつつアニメーションを変更できます

// 1秒かけてRun状態に遷移する
simpleAnimation.CrossFade("Run", 1.0f);

f:id:halya_11:20190328000643g:plain

ブレンド

Blend()を使うと二つのアニメーションを同時に再生できます。

// 今のアニメーションにRunをブレンドする(ウェイトは0.5、遷移時間は1秒)
simpleAnimation.Blend("Run", 0.5f, 1.0f);

こうして二つを同時に再生している状態でそれぞれのウェイトを以下のようにして変えればBlend Treeのようなこともできます。

simpleAnimation.GetState("Walk").weight = 1.0f - _speed;
simpleAnimation.GetState("Run").weight = _speed;

参考

blogs.unity3d.com

github.com