(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!

    

AnimatorControllerを使わずに簡単にアニメーションを再生出来るSimpleAnimation【Unity】


このエントリーをはてなブックマークに追加


この記事でのバージョン
Unity 2017.4.7f1


はじめに

Unityでアニメーションを再生したい場合、AnimatorControllerを作成してステートマシンを組んで……

みたいなやり方が一般的ですが、これがとにかく面倒くさいです。


f:id:kan_kikuchi:20180725095845j:plain


ステートマシンなんて使わず、昔のLegacy Animationみたく簡単に使いたい!

今回はそんな時に使えるSimpleAnimationというUnity公式から提供されているシステムの紹介です。


イメージとしては以下のような感じ。


f:id:kan_kikuchi:20180725094707g:plain


また、本記事に出てくる女の子のアセットは以下のものを使っています。

Sensei | 3D Humanoids | Unity Asset Store



導入

導入はいたって簡単、以下からSimpleAnimationを入手して、



f:id:kan_kikuchi:20180725080757j:plain


SimpleAnimationComponentというフォルダごと、プロジェクトに入れるだけ。


f:id:kan_kikuchi:20180725080913j:plain


ただ、そのままの状態だとビルドした時にテスト周りでエラーがでるので、

error CS0234: The type or namespace name `TestTools' does not exist in the namespace `UnityEngine'. Are you missing an assembly reference?

error CS0246: The type or namespace name `NUnit' could not be found. Are you missing an assembly reference?

f:id:kan_kikuchi:20180725081536j:plain


テストしない、またはテストが何か分からない場合はTestsというディレクトリを削除します。


f:id:kan_kikuchi:20180725081655j:plain


テストを使いたい場合は、Window -> Test RunnerからPlayModeを有効にします。


f:id:kan_kikuchi:20180725081720j:plain
f:id:kan_kikuchi:20180725081730j:plain


使い方

使い方も簡単で、ただアニメーションを再生するだけなら

SimpleAnimationをAddし、Play Automaticallyにチェックを入れ、

Animationに再生したいAnimationClipを設定するだけ。

なお、Animator Controllerは設定する必要がありません。

f:id:kan_kikuchi:20180725082927j:plain
f:id:kan_kikuchi:20180725083022g:plain


アニメーションを切り替えたい場合はあらかじめAnimationsに登録しておく必要があります。

左がそのアニメーションのState名で、右がAnimationClipです。


f:id:kan_kikuchi:20180725093959j:plain


もちろんプログラムから追加する事も可能です。

//_animationClip : AnimationClip, stateName : string
_simpleAnimation.AddState(_animationClip, stateName);


アニメーションの切り替えにはCrossFadeを使います。

引数に切り替えたいアニメのState名と、切り替えにかかる(フェードする)時間を設定します。

//0.2秒かけてAngryのアニメに切り替える
_simpleAnimation.CrossFade("Angry", 0.2f);

f:id:kan_kikuchi:20180725094707g:plain


また、CrossFadeQueuedを使えば前のアニメーションが終わった後に切り替えるという事も可能です。


なお、「アニメーション終了時に処理をしたい(コールバックを設定したい)」

みたいな時は以下の記事を参照の事。





SimpleAnimationChanger

SimpleAnimationを使って、簡単にアニメーションを切り替えるSimpleAnimationChanger

というものも作ったので、ついでご紹介します。

なお、実際のゲームで使うというものではなくキャラやアニメの確認用です。



使い方はAddし、InspectorからSimpleAnimationを設定するだけ。


f:id:kan_kikuchi:20180725095023j:plain


エディタの再生を開始すると、

Animationsに最初から登録されているアニメのボタンが出現し、切り替えられるようになります。

また、Animation Clipの欄を切り替えるとそのアニメーションをすぐに再生する事も出来ます。