次の項目は別ページに分割しました。
関連ページ:
Unity に関する基本的な情報は次のページにまとめています。
アニメーターコントローラー
公式サイト:
アニメーターコントローラー | 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
導入
参考:
UI デザイナーが Animator Controller 使ってみた – Qiita
Animator Controller についてのメモ | 電子烏の塒
基本
参考:
操作
ドキュメント:
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)
- タイミング (Timing/デフォルト:
- 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 State:Entry を右クリックしてメニューから「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 スクリプトリファレンス [公式]
参考:
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
アニメーションが正常に再生されない
原因:
- 適切なリグ (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)
コード: