ステート マシン は、アニメーション ブループリント で作成できるモジュール型システムで、再生可能な特定のアニメーションとそのアニメーションを再生できるタイミングを定義することができます。主に、このタイプのシステムは、アイドル状態、歩く、走る、ジャンプといったキャラクターの動作の状態 (ステート) にアニメーションを関連付けるために使用されます。ステート マシンを使用すると、ステート を作成し、そのステートで再生するアニメーションを定義して、他のステートに切り替えるタイミングをコントロールするさまざまなタイプの 遷移 を作成することができます。これにより、過度に込み入ったアニメーション グラフを使用しなくても、複雑なアニメーション ブレンドを簡単に作成できます。
このドキュメントでは、アニメーション ブループリントでのステート マシン、ステート、および遷移の作成および使用方法の概要について説明します。
前提条件
- ステート マシンは アニメーション ブループリント で作成されるため、アニメーション ブループリントの使用方法とその インターフェース を理解している。
- プロジェクトに、入力に反応するステートを作成できるように、動作コンポーネントを含むキャラクターが含まれている。このキャラクターがない場合は、「Third Person (サードパーソン)」テンプレート を使用できます。
作成および設定
ステート マシンは、アニメーション グラフ 内で作成されます。ステート マシンを作成するには、アニメーション グラフ 内を右クリックし、[State Machines (ステート マシン)] > [Add New State Machine (新規のステート マシンを追加)] を選択します。追加された New State Machine を Output Pose に接続します。

ステート マシンはアニメーション グラフのサブグラフであるため、[My Blueprint (マイ ブループリント)] パネル内にステート マシン グラフを表示することができます。このグラフをダブルクリックすると、ステート マシンが開きます。

また、アニメーション グラフ内の State Machine ノードをダブルクリックして開くこともできます。
エントリ ポイント
すべてのステート マシンは Entry ポイントから始まります。通常、このポイントは、デフォルトのステート を定義するために使用されます。一般的なロコモーションの設定では、キャラクターのアイドル ステートがデフォルトのステートにあたります。
デフォルトのステートを作成するには、entry 出力ピンをクリックしてドラッグし、マウスを離すと、コンテキスト メニューが表示されます。[Add State (ステートを追加)] を選択します。これにより、新しいステートが作成されてエントリ出力に接続され、このステートがデフォルトでアクティブになります。

ステート
ステートとは、ステート マシン内で編成されているサブセクションで、定期的にステート同士で相互に遷移することができます。ステート自体には独自のアニメーション グラフ レイヤーが含まれており、あらゆる種類のアニメーション ロジックを含めることができます。たとえば、アイドル ステートにはキャラクターのアイドル アニメーションのみが含まれている場合がありますが、武器ステートにはさらに射撃と照準のロジックが含まれていることがあります。どのロジックを使用していても、ステートの目的は、そのステートに固有の最終的なアニメーションまたはポーズを生成することです。
ステートを作成する
ステートは次の複数の方法で作成できます。
-
ステート マシン グラフを右クリックし、[Add State (ステートを追加)] を選択します。
-
ステートの境界線 (またはエントリ出力) をクリックしてドラッグし、マウスを離して [Add State] を選択します。また、この操作により 遷移 で前のステートに接続されます。
-
コンテンツ ブラウザ または アセット ブラウザ から、Animation アセット をステート マシン グラフにドラッグします。この操作により、アニメーションもステートに追加され、そのアニメーションが Output Pose に接続されます。
ステート マシンは、ステートを必要な数だけ含むことができます。また、ステート マシンの下にサブグラフとして表示されます。

ステートを編集する
ステートの内部の処理を表示するには、[My Blueprint (マイ ブループリント)] パネルでそのステートをダブルクリックするか、ステート マシン グラフでノード自体をダブルクリックします。この操作でステートが開きます。

アニメーション グラフと同様に、ステートにはアニメーション ロジックを接続するための最終的な Output Pose ノードが含まれます。ステートがアクティブな場合は、そのロジックが実行されます。別のステートがアクティブな場合は、そのロジックは実行されません。この Idle ステートの例では、Idle アニメーションが Output Pose に接続されています。このステートがアクティブになると、この結果のアニメーションが再生されます。

ステートのプロパティ
ステートが選択されているときは、[Details (詳細)] パネルで次のプロパティを表示、編集することができます。

名称 | 説明 |
---|---|
Name | 選択されているステートの名前。 |
Entered State Event (Custom Blueprint Event) | [Custom Blueprint Event] フィールドで使用されている名前で スケルトン通知 を作成します。ステートがアクティブになり、遷移が開始されると、この通知が実行されます。通常のスケルトン通知と同様に、アニメーション ブループリントの イベント グラフ でこれを作成することで、イベントにアクセスできます。 ![]() |
Left State Event (Custom Blueprint Event) | フィールドで使用されている名前でスケルトン通知を作成します。別のステートとのブレンドが開始されると、この通知が実行されます。 |
Fully Blended State Event (Custom Blueprint Event) | [Custom Blueprint Event] フィールドで使用されている名前でスケルトン通知を作成します。このステートが完全にブレンドされると、この通知が実行されます。 |
Always Reset on Entry | このプロパティを 有効にする と、このステート内のすべてのアニメーションがデフォルト値に再初期化されます。多くの場合、これは以下を意味します。
無効 な場合、すべてのアニメーションとそのプロパティは、このステートから他のステートに遷移して、このステートに戻っても前の再生ステートおよびその他のプロパティが維持されます。つまり、アニメーションが「中断したところから再開」されます。 |
遷移
どのステートを相互にブレンドするかをコントロールするには、遷移 を作成します。遷移はステート マシンの構造を定義するステート間のリンクです。

遷移を作成するには、ステートの枠線から別のステートにドラッグします。この例では、Idle ステート が Run ステート と双方向に接続されています。これは基本的なロコモーションのステート マシンでは一般的な設定です。遷移は一方向であるため、2 つのステートを往復させる場合は、各方向に遷移を作成する必要があります。

また、遷移ノードを選択して別のステートにドラッグすることにより、既存の遷移ロジックを再バインドすることもできます。遷移矢印を新しいバインディングにドラッグすると、複数の遷移ノードを一度に再バインドすることができます。

遷移 と 遷移ルール の詳細については、「遷移」を参照してください。
コンジット
通常の遷移がステート間の 1 対 1 の遷移であるのに対して、コンジット では 1 対多、多対 1、多対多の遷移を行うことができます。このため、コンジットはより高度で共有可能な遷移リソースとして機能します。
コンジットを作成するには、ステート マシン グラフを右クリックし、[Add Conduit (コンジットを追加)] を選択します。

コンジットはさまざまな方法で使用できます。たとえば、ステート マシンのエントリ ポイントを分岐させるために使用することができます。その後、コンジットの遷移を使用して、どのステートをデフォルトとして開始するかを選択することができます。この例は、ステート マシンを他のアニメーション (アニメーション モンタージュ など) で上書きして再初期化する場合に役立ちます。

上の例では、ステート マシンの [Details (詳細)] パネル で Allow Conduit Entry States を有効にする必要があります。
コンジットには独自の 遷移ルール があり、Conduit ノードをダブルクリックするか、[My Blueprint] パネルからコンジット グラフを開いて確認することができます。デフォルトでは、コンジットの遷移ルールは False を返します。ほとんどの場合、Can Enter Transition をオンにするだけで、コンジットへのまたはコンジットからの個々の遷移に関する遷移ルールのロジックを作成することができます。

遷移および遷移ルールの詳細については、「遷移ルール」を参照してください。
ステータス エイリアス
多くのステートとステータス間の遷移方法を複数含むステート マシンを作成する場合は、ステート エイリアス を使用すると、より適切なグラフを作成できます。ステート エイリアスは、ステート マシンに追加できるショートカットタイプのノードで、行を整然とした状態に保ち、遷移を統合することで、グラフの見やすさを向上させることができます。
![]() |
![]() |
---|---|
エイリアスを使用していないステート マシン | エイリアスを使用しているステート マシン |
ステート エイリアスを作成するには、ステート マシン グラフを右クリックし、[Add State Alias (ステート エイリアスを追加)] を選択します。

ステート エイリアスを機能させるには、そのステートに遷移することができるステートを定義し、通常の遷移方法を使用してそのエイリアスを他のステートに接続します。ステート エイリアス ノードをクリックすると、[Details] パネルで以下を確認することができます。
- ステート マシン内の各ステートが、プロパティとして表示されます。ステートを有効にすると、プロパティにより、そのステートが、エイリアスから他のステートに対して行われる遷移やルールを採用します。つまり、そのプロパティで、エイリアスに「遷移する」ステートを定義します。
-
[Global Alias (グローバル エイリアス)] を有効にすると、すべてのステートがエイリアスに遷移します。リストされているすべてのステートを有効にしても同じように機能しますが、[Global Alias] を有効にすると、後から作成される新しいステートも含むことができます。
グローバル エイリアスは、インタラクション、攻撃、その他同様のアニメーションなど、1 フレーム入力および期間が限られているステートに限り、使用することをお勧めします。期間が限られていないステートでグローバル エイリアスを使用すると、他のステートが常にグローバル エイリアスに遷移しないよう、他のすべてのステート遷移の間に複雑なロジックを追加する必要がある場合があります。

エイリアスの例
この例では、少し単純なステート マシンでは、着地 ステートと ロコモーション ステートが、ジャンプ と 落下ループ の両方のステートに遷移することを要求しています。合計 4 つの遷移が使用されており、それぞれに独自の遷移ルールがあります。

ステート エイリアスを使用すると、このグラフを整理することができます。同じ効果を得るためには、次を実行することができます。
- ステート エイリアスを作成し、落下ループ と ジャンプ の両方のステートに遷移させます。
- ステート エイリアスを選択し、ロコモーション と 着地 を有効にします。

ステート エイリアスは、有効なすべてのステートの遷移を統合するため、ステート エイリアスを使用すると、これらのステートは同じ遷移ルールおよびプロパティを共有します。特定の遷移に異なるルールやブレンド期間などのプロパティを設定したい場合は、該当するステートに一意の遷移を作成する必要があります。
ステート マシンのプロパティ
ステート マシンには、[Details] パネルに以下のプロパティがあります。

名称 | 説明 |
---|---|
Name | 選択されているステート マシンの名前。 |
Max Transitions Per Frame | この数値は、1 フレームまたは 1 ティックで発生する遷移または 決定 の数を定義します。ステート マシンに多くのステートと遷移があり、所定の期間に複数の遷移が true になる場合は、この数値を「1」に設定することをお勧めします。これにより、一度に行うことができる決定は 1 つのみになり、決定や遷移の競合を防止することができます |
Skip First Update Transition | ステート マシンに 関連性 が生じた場合、Entry ポイントに接続されているデフォルトのステートに初期化されます。その時点で、通常のステート マシンのプロセスが開始され、有効な遷移が行われます。
これは、目的の動作を達成させるために、デフォルト以外のステートがデフォルト ステートであるかのように動作できるようにするためです。たとえば、シンプルな Idle および Run のステート マシンがある場合、Idle はデフォルトのステートで、Run に遷移することができます。Skip First Update Transition を有効にし、ステート マシンの初期化時に Run 遷移ルールが true の場合、Run は直ちに初期化され、100% までブレンドされます。 |
Reinitialize on Becoming Relevant | このプロパティを有効にすると、ステート マシンに関連性が生じたときに、最初に入力されたステートが再初期化されます。この設定は、ステートごとのプロパティ Always Reset on Entry と同じように動作しますが、入力された最初の初期化済みのステートのみがリセットされます。 |
Create Notify Meta Data | 遷移ルールで アニメーション通知関数 を使用する場合、このプロパティを有効にすると、すべての関連データがこれらの通知関数に送信されます。無効にすると、どの通知関数も機能しません。 |
Allow Conduit Entry States | これを有効にすると、コンジット をエントリ ステートとして使用できるようになり、コンジットの遷移ルールに応じてデフォルトのステートを変更できるようになります。 |