パラパラアニメ : Mecanim編

前回は、SimpleAnimation機能を使ってパラパラアニメ(スプライトアニメ)を再生しました。今回は同じアニメ再生をUnityデフォルトのMecanimを使って実装します。

完成形は前回と同じで、ボタンを押すと流れ星アニメを再生します。

ボタンを押すとアニメーションが再生

Mecanim

MecanimはUnity標準のAnimatorを使ってアニメを制御する方法です。ステートマシンで状態を管理して、状態に応じてアニメを切り替えることができます。

例えばプレイヤーのIdleからWalk/Run/Jumpなどのステート(状態)を切り替え、その状態に応じてアニメを切り替えるということができます。

Animatorの例

Animatorを設定する

Animatorを作成する

前回、Animation Clipを作成しました。実はAnimation Clipを作成した時に自動でAnimatorが作成されています。

AnimationClipとAnimator

Animatorの遷移をつくる

AnimatorをダブルクリックするとAnimatorウィンドウが開きます。今回は「ボタンを押したタイミングでアニメを再生する」を実装します。

それに必要なステートは「待機状態」と「再生状態」の2つです。Animatorを以下のように組みます。

Wait状態とShootingStarアニメ再生状態

遷移パラメータの追加

ボタンを押したというトリガーで「ShootingStar」状態に遷移させます。まず、遷移するための条件のトリガーを追加します。AnimatorウィンドウのParametersタブを開いて、Playというトリガーを追加します。

Playというトリガーを追加

トランジションの設定

次にWaitからShootingStarのトランジションの条件にTriggerを追加します。トランジションを選択した状態で、Cordinationsで遷移条件を指定します。

ShootingStarへのトランジション設定

最後にShootingStarアニメが終了したタイミングでWait状態に戻すようにします。今度は逆のShootingStarからWaitのトランジションを選択した状態で、HasExitTimeの設定をします。HasExitTimeは指定時間が経過したら遷移させることができます。

Waitへのトランジション設定

これでAnimatorの設定は完了です。

アニメを再生する

最後にボタンを押した時にアニメーションを再生させるようにします。

前回と同様にアニメを再生するためのゲームオブジェクトを用意します。そのオブジェクトに Animatorコンポーネントを追加します。Controllerには先ほど作成したAnimatorを設定します。

Animatorコンポーネントを追加

最後に、ボタンクリック時にAnimatorで用意した Play という名前のトリガーを呼べば完了です。

ボタンクリック時にPlayトリガーを呼ぶ

これでボタンを押したらアニメーションを再生することができました。

ボタンを押すとアニメーションが再生

まとめ

今回は Mecanim でアニメを再生してみました。

前回のSimpleAnimationと比べて1段階Animatorでのステート管理が挟まるので、ちょっと手間がかかるケースもあるかもしれません。それぞれのやり方を把握しておくと、実装の選択肢は広がるかなと思います。

次回は、(スプライトアニメの再生ではないのですが)同じ流れ星アニメの再生をDotweenという機能を使って実装してみます。