
ノーマスク
マスクをせずに電車に乗っていたら咳払い一つでオバさんに睨まれた小心者の皆さんこんにちは。最近はインフルエンザが流行っているせいか予防の為にマスクをしている方が多いと思いますが、かといってノーマスクの人間を病原菌のように扱うのはどうかと思う。まぁ、何も言えずにその後は咳を我慢するしかなかったんですがね。
アニメーション制御
Unityでキャラクターのアニメーション切り替えを行う場合はAnimationControllerを使うのが一般的なんですが、ちょっと間を開けると各パラメータの設定の仕方を忘れたりして、調べたり思い出したりするのに意外と手間取ったりします。

しかもAnimationControllerは結構高機能できちんと理解すればいろんな事ができるんですが、その分覚える量が多くて忘れるたびにネットを検索するのは面倒くさいので、今回はAnimationControllerによるアニメーション遷移について意外と忘れがちな内容を備忘録として纏めたいと思います。
TriggerとParameter
AnimationControllerでは各アニメーションをState(状態)として管理して、条件を指定して各State間を遷移させる事でアニメーションの切り替えを行います。

Stateを遷移させる条件はTransition(各Stateを結ぶ矢印)のInspectorで設定を行いますが、その時の条件として使用するものは大きくTriggerとParameterの二つに分けることができます。
◆Trigger
TriggerはStateの切り替えを一度だけ行う場合に使用します。下の図はIdleからSit(座り)へ遷移する条件としてConditionsに[Sit]というTriggerを設定している状態です。

スクリプトのSetTriggerで指定されたTrigerを指定するとTriggerはtrueの状態となり、その条件に沿ったStateへ遷移しますが、Trigger自体は自動的にfalseへ戻ります。
上の図の場合、TriggerをONにするとIdleからSitへ遷移しますがSit(座り)のアニメーションが終了するとすぐにIdleへ戻っていきます。

攻撃ボタンを押した時の攻撃モーションなど、その時限りのアニメーション遷移としたい場合に有効な設定と言えるでしょう。
◆Parameter
ParameterにはFloat,Int,Boolの型がありますが使い方はどれも同じです。

上の図はIdleからSit(座り)への遷移条件に『Bool型の[SigFLG]が[True]の場合』という条件を設定しています。
指定したParamaterの値が条件に合致した場合にその条件に沿ったStateへ遷移しますがTriggerと異なりParamaterの値は意図的に変えない限り変わることはありません。
このためSit(座り)のアニメーションが終了するとIdleへ戻りますが、Paramaterの値を変えていない場合は直ぐにSitへ遷移します。

Sitアニメーション動作終了後にIdleへ戻らずにキャラクターのポーズ(座り状態)を維持したい場合はSit→Idleの遷移条件にParameterで別の値を条件にしておくと、Idleへは戻らずSitアニメーションの終了時のポーズが維持されます。

Sit→Idleの条件に[SitFLG]が[False]の場合を設定

座ったままとなる
連続してアニメーションを遷移する
アニメーション遷移後に続けて他のアニメーションへ遷移させたい場合は、アニメーション動作完了後に自動的に遷移させれば良いのでTransitionのConditions欄にはなにも設定せず、「Has Exit Time」欄をチェックONの状態にします。
例えば下のようにIdleからSit→Sit_and_Talk(会話アニメーション)へ遷移させたい場合

Sit→Sit_and_TalkのTransitionの設定はConditions欄は空のままにしておきます。(Has Exit TimeのチェックはONにする)

これを実際に動作させるとSit動作の終了後にSit_and_Talkへ自然に遷移されるのが確認できます。

遷移条件は同じで違うアニメーションを設定する
これまで設定例として男性モデルに男性用のアニメーションを使っていますが、これを女性モデルにも適用しようとすると男性の仕草のままでは違和感があるので女性用のアニメーションに変更させる必要があります。
各アニメーション間の遷移条件を流用して各Stateのアニメーションだけを変えたい場合はAnimation Override Controllerを使います。
Projectタブ上で右クリック→Create -> Animator Override Controllerを選択します。

Inspectorを確認しControllerの部分に、ベースとして用意しておいたAnimationControllerをドラッグアンドロップなどで指定、

するとベースのAnimationControllerで設定されたアニメーションが表示されるので、それぞれに上書きするアニメーションを指定します。

これを女性モデル側のAnimatorに設定します。

すると同じ遷移条件で違うアニメーショが再生されるようになります。
