(BlendTree以外)
Mecanim
- メリット
- 人型のリグを認識して調整する
- 他の人型キャラにアニメーションを使いまわせる
- アニメーションの切り替えをスムーズにブレンドする
アニメーションシステム?を指していて、Mecanim画面とかがあるわけではない。
Animatorコンポーネント
Controller
アニメーションセットを配置・管理するためのもの。使い回しが効く。
Avator
モデルにAvatorがついている場合はそれを選択する。
Legacyなどになっているモデルの場合は、Animation TypeをHumanoidに変更する。
Avatarが生成される。
Apply Root Motion
positionの変更が組み込まれている場合、移動するかどうか
Update Mode
| モード | 内容 |
|---|---|
| Normal | Time.timeScaleの影響を受ける |
| Animate Physics | 物理演算の影響を受ける |
| Unscaled Time | Time.timeScaleの影響を受けない |
Culling Mode
見えていない時にアニメーションさせるかどうか
Animation Clip
Animation Events
チュートリアルのサバイバルシューターを見てみると、StartSinkingがアニメーションイベントとわかる。このAnimationClipをもつゲームオブジェクトに、StartSinking関数をもったスクリプトがアタッチされていて、それをコールしている。死亡アニメーションの途中で床に沈み始めてほしいという意図だろう。アニメーションの最後につければ、終了時のイベントをとることもできる。
※注意点
Aアニメーションが終了する前に
Bアニメーションが始まってしまうと
Aアニメーションの終了するタイミングがなくなってしまう
(アニメーションイベントが発生しない)
なので実際の業務では、
前のフレームのアニメーションを取得し続け、
今のフレームのアニメーションと照らし合わせてステートを判定しているらしい
Animator Controller
State
アニメーションデータ(AnimationClip)をアニメーターウィンドウにドラッグ&ドロップするとステートがつくられる。
オレンジ色が最初のステート。右クリックからのSet as Layer Default Stateで、最初のステートを切り替えられる。
Any State
どのステートからでも遷移できるステート。ステートの遷移先にすることはできない。ex.「Any State」->「ダメージを受ける」
Transition
Stateの上で右クリックし、Make Transitionを選び、次のステートへつなげる。
Transition(矢印)をクリックして、ConditionsやExitTimeの設定をする。
※削除する場合はインスペクタのTransitionsからマイナスボタンを押さないといけない。
Parameters
アニメーション切り替え条件のパラメータを設定する。
「歩く」「走る」などじわじわ値を変えていって閾値を越えたかどうかの判定にはFloatを使う。
「ジャンプ」「攻撃」など、一回だけ実行したい時にはTriggerを使う。公式のサンプルでは「死亡した」ときにanimator.SetTrigger("Die");のように使っている。Triggerは1フレームtrueを実行したらfalseに戻る。一方Boolは、セットしたbool値を維持する。
1回だけ実行してフラグを元に戻したい場合は、Triggerを使って以下のようにシンプルに書くことができる。
if(Input.GetKeyDown(KeyCode.Space)) {
animator.SetBool("Jump", true);
} else {
animator.SetBool("Jump", false);
// falseに戻さないとずっとジャンプしている
}
if(Input.GetKeyDown(KeyCode.Space)) {
animator.SetTrigger("Jump");
}
Conditions
アニメーションの切り替え条件。パラメータから設定する。
ExitTime
Has Exit Timeにチェックを入れると、パラメータではなくアニメーションの再生回数(Exit Time)で遷移のタイミングを決める。
Fixed Duration
アニメーションがクロスする部分の度合いを、前のアニメーションの長さを元にパーセントで決めるか、秒数で決めるか。
AnimatorOverrideController
トランジション、ステートなどのロジックは同じで、複数キャラに使いまわしたい場合に使う。
ベースになるControllerを指定して、AnimationClipを差し替える。







