アニメーターコントローラー

公式サイト:

アニメーターコントローラー | Unity マニュアル [公式]

概要

ドキュメント:

アニメーションシステム概要 | Unity マニュアル [公式]

使い方

  • ステートマシン
  • サブステートマシン
  • アニメーションステート
  • ブレンドツリー
  • レイヤー (Layers)
  • パラメーター (Parameters)
特別な状態
  • Entry
  • Exit
  • Any State

ドキュメント:

Animator Controller の作成 | Unity マニュアル [公式]

参考:

Animation Controller の簡易的な解説 – Qiita

Animator Controller の使い方 | npaka

Animator Controller の使い方を解説 | STYLY

Animator Controller を用いたアニメーション切り替え方法 | XR-Hub

Animator Controller の基礎 | TECH PROjin

Animator Controller の使い方 | イシゲーの Unity 保管庫

ユニティちゃんでもっと Animator Controller を上手く使いたい | イシゲーの Unity 保管庫

Animator Controller の使い方 | FUNAYU-visual lab

Animator Controller でできることメモ | WeatherVane

Animator 設定等について | 自由だァ~ブログ

導入

参考:

アニメーションの切り替えシステムとスクリプト | かめくめ

Mecanim の利用 | STYLY

UI デザイナーが Animator Controller 使ってみた – Qiita

Animator Controller についてのメモ | 電子烏の塒

基本

参考:

Animator | yttm-work

操作

ドキュメント:

Animator ウィンドウ | Unity マニュアル [公式]

アニメーションステート (Animation State)

  • Motion
  • Speed
    • Multiplier
  • Mirror
  • Cycle Offset
  • Foot IK
  • Write Defaults
  • Transitions

ドキュメント:

アニメーションステート | Unity マニュアル [公式]

UnityEngine.AnimationState | Unity スクリプトリファレンス [公式]

AnimationState.clip | Unity スクリプトリファレンス [公式]

AnimationState.time | Unity スクリプトリファレンス [公式]

参考:

アニメーションの時間を指定して何かの値と同期させる | ネコロモーフ

How to change “Motion” of an animator state in runtime? – Unity Forum

Change motion of the animator state – Unity Forum

access motion parameter? – Unity Forum

Cycle Offset

参考:

Animator Controller のステート開始時に Cycle Offset をランダムにずらす | ゴマちゃんフロンティア

Write Defaults

参考:

知らないと面倒くさい事になるかもしれない Animator の Write Defaults の動作について | テラシュールブログ

Animator の Write Defaults の設定 | STAC STAR

Animator 付きの GameObject の非アクティブ化について | 原カバンは鞄のお店ではありません。

Animator で動かすオブジェクトをスクリプトでも動かす際の注意 | テラシュールブログ

Mecanim Default Values – Unity Forum

レイヤー (Layers)

設定
  • ウェイト (Weight)
  • マスク (Mask/デフォルトNone)
  • ブレンド (Blending)
    • オーバーライド (Override/デフォルト)
    • 加算 (Additive)
  • 同期 (Sync/デフォルト無効)
    • タイミング (Timing/デフォルト無効)
    • ソースの層 (Source Layer)
  • IK パス (IK Pass/デフォルト無効)

ドキュメント:

アニメーションのレイヤー | Unity マニュアル [公式]

参考:

Animator Controller の Layer を使ってモーションを一部だけブレンドしたり加算したりする | LIGHT11

指のポーズをブレンドしてハンドジェスチャーを作ろう | すぎしーの XR と 3DCG

レイヤー/アバターマスクを用いてアニメーションを複数同時に再生する | XR-Hub

Animator のレイヤーの Sync を使ってアニメーションを全て変更する | かめくめ

レイヤー、アバターマスクを使って体の一部分を別のアニメーションにする | かめくめ

Generic リグのキャラクターモデルのアニメーションを組み合わせる | MR が楽しい

キャラの表情コントロール | ini-T MUSIC SKY

加算レイヤー (Additive Layer)

参考:

ステージのギミックをアニメーションで作る際に便利な設定 | テラシュールブログ

Additive Animation (Override?) – Unity Forum

Mecanim root motion and additive layer bug ? – Unity Forum

How to use animation layer with additive mode and root motion applied? – Unity Answers

アバターマスク (Avatar Mask)

ヒューマノイド/グループ
  • ヘッド
  • 左腕
  • 右腕
  • 左手
  • 右手
  • 左脚
  • 右脚
  • ルート
  • 左手 IK
  • 右手 IK
  • 左足 IK
  • 右足 IK
こちらのページを参照

ドキュメント:

アバターマスクウィンドウ | Unity マニュアル [公式]

参考:

Avatar Mask を使い既存のアニメーションを混ぜる – Qiita

特定部位だけモーションを無効化する Avatar Mask の基礎知識 | LIGHT11

レイヤー/アバターマスクを使って体の一部分を別のアニメーションにする | かめくめ

レイヤー/アバターマスクを用いてアニメーションを複数同時に再生する | XR-Hub

Default State

  • Set StateMachine Default StateEntry を右クリックしてメニューから「Set StateMachine Default State」を選択して既定の遷移 (濃いオレンジ色の矢印) を作成する。
  • Set as Layer Default Stateステートを右クリックしてメニューから「Set as Layer Default State」を選択してレイヤーの初期状態 (オレンジ色のステート) を指定する。

ドキュメント:

アニメーションステート | Unity マニュアル [公式]

参考:

Unity のアニメータで1回だけアニメーションさせる | matudozer のアプリ作成日記

アニメーションの初期ステートを変更する | TISSUE BOY

エントリートランジションの変更について – teratail

How to change the default or entry animation for an animator | NeedOne

How can I change orange animation state transitions? – Unity Forum

“Set Default State” in AnimatorController in code? – Unity Forum

Default State in Animator – Unity Forum

Animator default values can change through the animations itself – Unity Forum

遷移の条件を論理和 (OR) で組み合わせる

必要な数だけ遷移を作成し、それぞれに条件を指定する。

参考:

Animator transition conditionals is OR possible, or only and? | Unity Answers

ドアをアニメーションさせる

参考:

アニメーションのスクリプト操作 (Raycast) | Unity と Blender とムービー制作

パラメーターで遷移先を変更する (Conditions)

参考:

アニメーションの切り替えシステムとスクリプト | かめくめ

状態遷移に応じてハンドラを実行する

  • StateMachineBehaviour を継承してハンドラをオーバーライドする
  • トリガーと同時にタイマーを起動して処理する

参考:

Best way to know when animation enter / exit a state? – Unity Forum

How to add key frames to a new animation file? – Stack Overflow

非アクティブ化に伴って Animator がリセットされる

参考:

GameObject を非アクティブにすると Animator がリセットされる挙動、その対処法 | テラシュールブログ

Animator 付きの GameObject の非アクティブ化について | 原カバンは鞄のお店ではありません。

Animator コンポーネント

ドキュメント:

Animator コンポーネント | Unity 2018.4 マニュアル [公式]

UnityEngine.Animator | Unity スクリプトリファレンス [公式]

参考:

Animator からステートの一覧を取得する – Qiita

Animator の State 一覧を取得する | うにてぃブログ

Culling Mode

  • Always Animate常にアニメーションを更新し、カリングを行わない。
  • Cull Update Transformレンダラーが表示されていない時に、リターゲティング、IK、Transform の更新を行わない。
  • Cull Completelyレンダラーが表示されていない場合に、アニメーションを完全に無効化する。

ドキュメント:

Culling Mode | Unity 2018.4 マニュアル [公式]

参考:

Animator の Culling Mode でハマった話 | kido Tech Blog

Cull Update Transforms: Doing this at a distance | Unity Forum

How does Animator Culling work? – Unity Answers

Animator Override Controller

Animator Controller による振る舞いは同じまま、アニメーションクリップだけ差し替える。

ドキュメント:

Animator Override Controller | Unity マニュアル [公式]

参考:

Animator Override Controller を使う | かめくめ

Animator Override Controller | Unity で魔物使いゲームを作る

How to change “Motion” of an animator state in runtime? – Unity Forum

Change motion of the animator state – Unity Forum

access motion parameter? – Unity Forum

SetTrigger / ResetTrigger

  • SetTiggerトリガーを起動する
  • ResetTriggerトリガーをリセットする

ドキュメント:

Animator.SetTrigger | Unity スクリプトリファレンス [公式]

Animator.ResetTrigger | Unity スクリプトリファレンス [公式]

参考:

Character Controller speed: running vs. walking – Stack Overflow

SendMessage / SendMessageUpwards

ドキュメント:

Component.SendMessage | Unity スクリプトリファレンス [公式]

Component.SendMessageUpwards | Unity スクリプトリファレンス [公式]

現在のステートを取得する (GetCurrentAnimatorStateInfo)

ドキュメント:

Animator.GetCurrentAnimatorStateInfo | Unity スクリプトリファレンス [公式]

参考:

現在のステート名を取得する方法 | Daichi

Animator の遷移状態をスクリプトで取得し遷移させるかどうかを決める | かめくめ

Animator で現在のステートを取得する | naru design

任意の Animation State と現在再生されている State を比較する | でっかい肉じゃが

Current animator state name? | Unity Forum

Get name of current animation state – Stack Overflow

AnimatorController

ドキュメント:

Animations.AnimatorController | Unity スクリプトリファレンス [公式]

参考:

Animator に設定されている Layer と State を実行時に取得してみた | kandy codings 開発ブログ

AnimatorState

ドキュメント:

Animations.AnimatorState | Unity スクリプトリファレンス [公式]

参考:

Setting Motion Time on Animator State sends Root Motion crazy – Unity Forum

OnAnimatorMove

ドキュメント:

MonoBehaviour.OnAnimatorMove() | Unity スクリプトリファレンス [公式]

参考:

Unity上でMMDモデルを独自アニメーションで走らせる | テラシュールブログ

再生フレームレートを変更する (FPS)

参考:

Animator を任意のフレームレートで動作させる – Qiita

スパイダーバース感!?モーション FPS 制御によるアニメチックな映像表現 – Qiita

Is there a possibility to skip animator frames with distance? For example using Player Loop? – Unity Forum

アニメーションが正常に再生されない

原因:

  • 適切なリグ (Avatar) が割り当てられていない。
  • リグとモデルの構造が一致していない。
  • ループが適切に設定されていない。
  • 「Write Defaults」が適切に設定されていない。
ヒューマノイド (Humanoid)
  • リグ (Avatar) が適切に構成されていない。
汎用 (Generic)
  • リグとモデルの階層が一致していない。

対処法:

次のファイル、あるいは、コンポーネントの設定を適切に行う。

  • FBX モデル (.fbx)
    • インポート設定
      • Rig
      • Animation
    • Avatar
  • アニメーションクリップ (.anim)
    • フレームレート (FPS)
    • ループ設定
      • Loop Time
      • Loop Pose
      • Cycle Offset
  • 「Animator」コンポーネント
    • Controller
    • Avatar
    • Apply Root Motion
    • Update Mode
    • Culling Mode
  • アニメーションコントローラー (Animator Controller)
    • 状態 (Animation State)
    • 遷移 (Transition)
    • レイヤー (Layers)
      • Weight
      • Mask
      • Blending
    • パラメータ (Parameters)

参考:

animation not playing – Unity Forum

animation not playing – Unity Answers

Why does the root motion animation make the prefab move in the opposite direction? – Stack Overflow

Tips

Animator のスパゲティなステートマシンを整理する | テラシュールブログ

まとめ

Animator Controller をマスターして自由で自然なモーション再生!複雑な各設定項目を全て解説 | LIGHT11

Animator Controller の使い方 | npaka

Animator の個人的な逆引きリファレンス – Qiita

チュートリアル

こちらのページを参照

Animator Controller (Official)

Animation Control – Unity 5 (Aaron Hibberd)

Contain Clip

アニメーターコントローラーにアニメーションを格納する。

コード:

Contain Clip – Animator Controller に Animation Clip を含める (tsubaki) – GitHub Gist

ドキュメント:

AssetDatabase.AddObjectToAsset | Unity スクリプトリファレンス [公式]

参考:

Animator Controller に Animation Clip を内蔵する | テラシュールブログ

Player Animator

動画:

Animate Like a Programmer (Tarodev)

コード:

Player Animator (Matthew-J-Spencer) – GitHub Gist

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA