Animator のしくみ
メニューを押すと、帽子が出る。ハンドサインをすると、表情が変わる。そのあいだには、パラメーター、Animator、ステート、トランジション、アニメーションクリップという部品が順に動いています。自分でギミックを作る前に、それぞれの役目と、どこで設定するのかを解説します。
公開 · 対象は Unity の Built-in Render Pipeline と VRChat のアバター(Avatars 3.0)です。2026年11月時点の内容です。
こんなときに読んでください
- 自分でギミックを作ってみたいが、Animator を開いても何がなんだか分からない。
- FX、Gesture などの名前は見たことがあるが、違いが分からない。
- パラメーターとメニューと Animator が、どうつながっているのか知りたい。
- 配布されているギミックを入れたが、中で何が起きているのか分からない。
メニューを押してから、見た目が変わるまで
VRChat のアバターのギミックは、ほとんどが同じ流れで動きます。この回では、メニューで帽子を出し入れするギミックを例にします。名前は例です。
- メニューを押すExpressions Menu の Toggle「帽子」
- パラメーターが変わるHat が false から true に
- トランジションの条件を満たす条件は「Hat が true」
- ステートが変わるHat_OFF から Hat_ON に
- クリップの値が書かれる帽子の Is Active を 1 に
- 見た目が変わる帽子が出る
メニューは、パラメーターの値を変えるだけです。見た目は変えません。見た目を変えるのは、Animator が再生するアニメーションクリップです。メニューと Animator は、パラメーターの名前でつながっています。
ハンドサインや、触れたことで動くギミックも同じです。最初の「メニューを押す」が「手の形が変わる」「頭に手が触れる」に変わるだけで、パラメーターから先は同じ流れです。
ギミックが動かないときは、この流れのどこで止まっているかを、左から順に確かめます。確かめ方は第12回 ギミックが動かないときで解説します。
この回で出てくる言葉
はじめに、言葉の意味をそろえておきます。Unity の画面の表記は英語のままにしています。
- Animator(アニメーター)
- パラメーターを見て、いまどのアニメーションを再生するかを決めるしくみです。アバターのいちばん上に付いている Animator コンポーネントが、これを動かします。
- Animator Controller(コントローラー)
- Animator の中身を入れたファイルです。拡張子は
.controller。中に、レイヤー、ステート、トランジション、パラメーターが入っています。 - Playable Layers
- VRChat がアバターに用意している、コントローラーを入れる枠です。FX、Gesture などがあります。
- レイヤー
- コントローラーの中の段です。ギミック1つにつき1つ作ることが多いです。Playable Layers とは別のものです。
- ステート
- 「帽子が出ている」のような、いまの状態を表す箱です。1つのステートに、1つのクリップを入れます。
- トランジション
- ステートからステートへの矢印です。条件を満たすと、矢印の先のステートへ移ります。
- パラメーター
- Animator が見る値です。Bool(オンかオフ)、Int(整数)、Float(小数)があります。
- アニメーションクリップ
- どのオブジェクトの何を、どの値にするかを書いたファイルです。拡張子は
.anim。作り方は第7回 アニメーションを作るで解説します。 - Expression Parameters
- VRChat に、アバターで使うパラメーターを知らせる一覧です。値を覚えておくか、ほかの人に送るかも、ここで決めます。
- Expressions Menu
- VRChat の中で開くメニュー(Action Menu)の中身です。項目を押すと、パラメーターの値が変わります。
Playable Layers の役目
VRChat のアバターには、コントローラーを入れる枠が5つあります。これを Playable Layers と呼びます。Hierarchy でアバター(VRC Avatar Descriptor が付いたもの)を選び、Inspector の VRC Avatar Descriptor の「Playable Layers」で見られます。
5つの枠は、Base、Additive、Gesture、Action、FX の順に重ねて使われます。同じものを2つの枠が動かすときは、あと(FX に近いほう)が勝ちます。
- Base
- 歩く、走る、しゃがむなど、移動の動きです。骨(Transform)だけを動かします。ふつうは変えません。
- Additive
- Base の動きに足す動きです。呼吸の動きなど。Humanoid の骨だけを動かします。ふつうは変えません。
- Gesture
- ハンドサインのときの指の形や、しっぽ・耳の動きです。骨だけを動かします。
- Action
- エモートなど、体全体を動かす動きです。ふだんは効いていない(Weight が 0)枠で、使うときだけ効かせます。
- FX
- 骨の動き以外のすべてです。オブジェクトのオンオフ、BlendShape(表情や体の形)、マテリアルなど。自分で作るギミックは、ほとんどがここに入ります。
- Sitting・TPose・IKPose
- 座ったときの動きや、体の大きさ・関節の曲がり方を測るためのポーズです。Playable Layers の下に並んでいます。ふつうは変えません。
見た目を FX で動かすのには、理由があります。FX 以外の枠で動かした BlendShape やマテリアルは、鏡に映る自分(ミラーの中のアバター)に写されません。FX で動かしたものは、すべて写されます。
反対に、Humanoid の骨(腕、脚、頭、指など)は、FX では動きません。手の形やポーズは Gesture や Action で動かします。ハンドサインで表情を変えるときも、表情(BlendShape)は FX、指の形は Gesture、と分かれます。くわしくは第10回 ハンドサインで表情を変えるで解説します。
Humanoid ではない(Generic の)アバターには、Base、Action、FX の3つの枠だけがあります。
▼ Playable Layers
- Gesture の枠です。ハンドサインのときの指の形を作るコントローラーが入っています。「Default」のままの枠は、VRChat の標準のコントローラーが使われます。
- FX の枠です。買ったアバターには、表情などのためのコントローラーが、たいてい最初から入っています。欄をクリックすると Project ウィンドウでそのファイルが光り、ダブルクリックすると Animator ウィンドウで開けます。
コントローラー・レイヤー・ステート・トランジション
コントローラーの中を見るのは、Animator ウィンドウです。Window → Animation → Animator で開き、Project ウィンドウでコントローラーのファイルを選ぶ(またはダブルクリックする)と、中身が出ます。
自分で作るときは、Project ウィンドウのフォルダで右クリックして、Create → Animator Controller を選びます。ギミックごとに1つ作っておくと、あとで Modular Avatar でアバターにつなぎやすくなります。
Animator ウィンドウの左上には、Layers と Parameters の2つのタブがあります。Layers を選ぶとレイヤーが並び、選んだレイヤーのステートとトランジションが、右の広いところ(グラフ)に出ます。
- レイヤー
- ギミックごとに分けた段です。左上の
+で足します。上から順に計算され、同じものを書くときは下のレイヤーが勝ちます。いちばん上の Base Layer 以外は、足したときの Weight(効き具合)が 0 です。レイヤーの右の歯車を押して、Weight を 1 にします。0 のままだと、ステートは切り替わっても、見た目に出ません。 - ステート
- 「帽子が消えている」「帽子が出ている」のような状態を表す箱です。グラフの何もないところを右クリックして
Create State → Emptyで作るか、クリップのファイルをグラフにドラッグして作ります。ステートを選ぶと、Inspector のMotionに、そのとき再生するクリップが出ます。 - Default State(オレンジ色のステート)
- レイヤーが動き出したときに、最初に入るステートです。最初に作ったステートがオレンジ色になります。ステートを右クリックして
Set as Layer Default Stateで変えられます。オンオフなら、ふだんの姿(帽子が消えている)を Default にします。 - トランジション
- ステートからステートへの矢印です。ステートを右クリックして
Make Transitionを選び、行き先のステートをクリックすると引けます。矢印を選ぶと、Inspector に移るときの設定とConditions(条件)が出ます。 - Entry・Any State・Exit
- Entry は入り口で、Default State へつながっています。Any State は「いまどのステートにいても」という意味で、ここから引いた矢印は、条件を満たせばどこからでも移ります。Exit は出口です。オンオフのギミックは、Any State と Exit を使わずに作れます。
LayersParameters
- ギミック1つにつき、レイヤーを1つ足します。左上の + を押し、名前(ここでは Hat)を付けます。
- レイヤーの右の歯車を押すと出ます。足したばかりのレイヤーは Weight が 0 です。必ず 1 にします。
- オレンジ色のステートから始まります。帽子が消えている Hat_OFF を Default にしています。
- 矢印を選ぶと、Inspector に条件が出ます。行きは Hat が true、帰りは Hat が false のときに移ります。
| 設定 | 意味 | オンオフのギミックでは |
|---|---|---|
| Has Exit Time | チェックが入っていると、いまのクリップを決まった時間(Exit Time)まで再生してから移ります。 | 外します。すぐに移るようにします。 |
| Transition Duration | 前のステートから次のステートへ、混ぜながら移る長さです。Fixed Duration にチェックがあれば秒、無ければクリップの長さに対する割合です。 | 0 にします。パッと切り替わるようにします。 |
| Conditions | 移る条件です。+ で足し、パラメーターと値を選びます。いくつか足すと、すべてを満たしたときに移ります。 | 行きは Hat が true、帰りは Hat が false。 |
| Can Transition To Self | Any State から引いた矢印にだけある設定です。チェックがあると、条件を満たしている間、同じステートに何度も入り直します。 | Any State を使うときは、たいてい外します。 |
トランジションの設定を1つずつ決める手順は、第8回 メニューでオンオフするギミックを作るで解説します。
作ったコントローラーをアバターで動かすには、アバターの FX の枠に入っているコントローラーに足す必要があります。Modular Avatar の MA Merge Animator を使うと、買ったアバターの FX のファイルを書き換えずに、アップロードするときに自動で足してくれます。この連載では、この方法をおすすめします。手順は第8回 メニューでオンオフするギミックを作るで解説します。
パラメーター(Animator と Expression Parameters)
パラメーターは、Animator が見る値です。トランジションの条件や、Blend Tree(値に合わせてクリップを混ぜるしくみ)に使います。
パラメーターは、2か所に書きます。1つは、コントローラーの Parameters タブ(Animator が見る値)です。もう1つは、VRChat の Expression Parameters(メニューから変えられて、覚えておいたり、ほかの人に送ったりする値)です。この2つは、名前でつながります。名前は、大文字と小文字まで同じにします。Hat と hat は別のパラメーターです。
Animator にパラメーターを足すには、Animator ウィンドウの Parameters タブを開き、+ を押して型(Bool など)を選び、名前を入れます。Expression Parameters のファイルは、Project ウィンドウで右クリックして Create → VRChat → Avatars → Expression Parameters で作れます。買ったアバターには、たいてい最初から入っています。
| 型 | 入る値 | 同期に使う量 | よく使うギミック |
|---|---|---|---|
| Bool | true(オン)か false(オフ) | 1 bit | 小物や服の出し入れ。第8回 メニューでオンオフするギミックを作る |
| Int | 0〜255 の整数 | 8 bit | 何着かから1つを選ぶ。第9回 段階で切り替える・少しずつ変えるギミック |
| Float | -1.0〜1.0 の小数(Radial Puppet では 0.0〜1.0) | 8 bit | 色や大きさを、回して少しずつ変える。第9回 段階で切り替える・少しずつ変えるギミック |
| Trigger(Animator だけ) | 一瞬だけ true になる | — | VRChat の公式は、使わないようにすすめています。Bool・Int・Float を使います。 |
Animator の型は、Expression Parameters の型と同じにするのが基本です。違う型にすると、VRChat が変換します。たとえば、Expression Parameters で Bool のパラメーターを、Animator で Float として受けると、true は 1.0、false は 0.0 になります。オンオフを Blend Tree で扱いたいときに使えます。
Expression Parameters には、パラメーターごとに次の設定があります。
- Default
- アバターを読み込んだときや、リセットしたときの値です。帽子をはじめはかぶっていないなら、false にします。
- Saved
- チェックを入れると、ワールドを移ったり、アバターを着替えたりしても、値を覚えておきます。外すと、そのたびに Default に戻ります。
- Synced
- チェックを入れると、値がほかの人に送られます。外すと自分にだけ変わり、ほかの人には変わって見えません。
同期する(Synced にチェックがある)パラメーターは、合計で 256 bit までです。Bool は 1 bit、Int と Float は 8 bit を使います。
VRChat が値を入れてくれるパラメーターもあります(組み込みのパラメーター)。ハンドサインの GestureLeft・GestureRight、自分のアバターかどうかの IsLocal などです。これは Expression Parameters には書きません。Animator の Parameters に、同じ名前と型で足すだけで使えます。ハンドサインの番号は第10回 ハンドサインで表情を変えるで解説します。
Saved・Synced・Default を、ギミックに合わせて決める手順は第8回 メニューでオンオフするギミックを作るで解説します。
LayersParameters
Parameters
- Animator の Parameters タブです。ここに無いパラメーターは、トランジションの条件に選べません。
- Expression Parameters の名前です。Animator のパラメーターと、大文字小文字まで同じにします。名前をコピーして貼ると、まちがえにくくなります。
- Saved:ワールドを移っても、値を覚えておきます。
- Synced:値をほかの人に送ります。外すと、ほかの人からは変わって見えません。
動かして確かめる
メニューの「帽子」を押したときに、パラメーター、ステート、クリップの順に何が起きるかを見てみてください。レイヤーの Weight と、Animator のパラメーター名も変えられます。帽子は、Unity でオフにしてアップロードしたものとします。
Animator(Hat のレイヤー)
いまのステート Hat_OFF
見た目
Is Active 0
メニューが Expression Parameters の Hat を false にしました。Animator にも同じ名前の Hat があるので、Animator の Hat も false です。
Animator の Hat が false なので、ステートは Hat_OFF です。
Weight が 1 なので、Hat_OFF のクリップが、帽子の Is Active を 0 と書きます。
メニューのとおり、帽子が消えています。
よくある困りごとと直し方
ステートは変わるのに、見た目が変わらない
- 起きること
- Unity で再生すると、Animator ウィンドウではステートが切り替わっている。でも、帽子は出ない。
- 原因
- 足したレイヤーの Weight が 0 のままです。Unity でレイヤーを足すと、Weight は 0 で作られます。
- 直し方
- Animator ウィンドウの Layers で、そのレイヤーの歯車を押し、Weight を 1 にします。
メニューを押しても、ステートが変わらない
- 起きること
- メニューの項目を押しても、Animator のステートが Default のまま動かない。
- 原因
- Expression Parameters と Animator で、パラメーターの名前が違います。大文字小文字の違いや、名前の最後の空白もよくあります。Animator にパラメーターを足し忘れていることもあります。
- 直し方
- Expression Parameters の名前をコピーして、Animator のパラメーター名に貼り直します。型もそろえます。
切り替わるのが遅れる・じわっと変わる
- 起きること
- メニューを押してから、一拍おいて切り替わる。パッと変わらず、少しずつ変わる。
- 原因
- トランジションの Has Exit Time にチェックが入っているか、Transition Duration が 0 ではありません。
- 直し方
- 矢印を選び、Has Exit Time を外し、Transition Duration を 0 にします。第8回 メニューでオンオフするギミックを作るも見てください。
手の形やポーズが動かない
- 起きること
- FX のクリップで腕や指の形を作ったのに、VRChat では動かない。
- 原因
- Humanoid の骨(筋肉)は、FX では動きません。
- 直し方
- 手の形は Gesture、体全体の動きは Action のコントローラーで動かします。
鏡の中の自分だけ、表情が変わらない
- 起きること
- 自分の目で見ると表情が変わっているのに、鏡に映るアバターは変わらない。
- 原因
- 表情の BlendShape を、FX 以外の枠(Gesture など)で動かしています。FX 以外の枠の BlendShape やマテリアルは、鏡の中のアバターに写されません。
- 直し方
- 表情などの見た目のクリップは、FX のコントローラーに移します。
自分には見えるのに、ほかの人には変わって見えない
- 起きること
- 自分の画面では帽子が出ているのに、フレンドからは見えていないと言われる。
- 原因
- Expression Parameters で、そのパラメーターの Synced のチェックが外れています。
- 直し方
- Synced にチェックを入れて、アップロードし直します。ほかの原因は第12回 ギミックが動かないときにまとめています。
気をつけること
- 買ったアバターの FX のファイルを直接書き換えるときは、先に複製を取っておきます。できれば Modular Avatar で、自分のコントローラーを別に足します。アバターを更新しても、自分のギミックが消えません。
- 1つのコントローラーを、2つの枠(たとえば Gesture と FX)に入れないでください。VRChat の公式も、大きな問題の元になるとしています。
- 行き止まりのステートを作らないでください。パラメーターはいつでも変わります。行きの矢印を引いたら、帰りの矢印も引きます。
- 同じコントローラーの中で、Write Defaults の ON と OFF を混ぜないでください。オンのクリップとオフのクリップを両方作っておくと、どちらでも動きます(第13回 Unity と VRChat で見た目が変わる)。
- パラメーターの名前は、何のギミックか分かる名前にします。ほかのギミックと同じ名前にすると、片方を動かしたときに、もう片方も動きます。
まとめ
- メニューはパラメーターの値を変えるだけで、見た目を変えるのは Animator が再生するクリップです。
- 見た目(オンオフ、BlendShape、マテリアル)は FX で動かします。Humanoid の骨は FX では動きません。
- コントローラーの中は、レイヤー、ステート、トランジションでできています。足したレイヤーは Weight を 1 にします。
- Animator のパラメーターと Expression Parameters は、名前でつながります。大文字小文字までそろえます。
- 次は、ステートに入れるクリップを作ります(第7回 アニメーションを作る)。