遷移の設定
どのステートを相互にブレンドするかをコントロールするには、遷移 を作成します。遷移はステート マシンの構造を定義するステート間のリンクです。
遷移を作成するには、ステートの枠線から別のステートにドラッグします。この例では、Idle ステート が Run ステート と双方向に接続されています。これは基本的なロコモーションのステート マシンでは一般的な設定です。遷移は一方向であるため、2 つのステートを往復させる場合は、各方向に遷移を作成する必要があります。
遷移ルール
遷移がステート間のブレンドの構造をコントロールするのに対して、遷移ルール はステートが遷移できるタイミングをコントロールします。つまり、単に遷移を定義するだけではなく、遷移する方法やタイミングを定義する必要があります。
遷移ルールは、遷移の作成時に自動的に作成されます。ステートと同様に、[My Blueprint (マイ ブループリント)] パネルか、ステート マシン グラフの 遷移アイコン をダブルクリックすることで、遷移ルールを表示したり、アクセスしたりすることができます。
遷移ルールでは、ブール値 (true または false) を出力する目的で、確認と比較のためにさまざまなブループリント ロジックを作成できます。true 値を使用すると、ステートが次のステートに遷移できるかどうかを決定することができます。
たとえば、Idle ステートから Run ステートに遷移し、再び Idle ステートに戻る場合は、以下のようなロジックになります。この例では、bool 変数が遷移ルールに使用されています。デフォルトのステートに戻るときは、bool の逆数が使用されます。
遷移ルールは、通常、Movement コンポーネントと他のキャラクター変数によって通知されます。操作可能なキャラクターに共通のプロパティを取得する方法については、「アニメーション変数を取得する方法」ページを参照してください。
意図したロジックで変数が正しく設定されたら、設定した変数の条件がゲームプレイ中に満たされることで、遷移が発生します。
遷移関数
遷移ルール グラフで、以下のような遷移専用の関数を使用して、ロジックを強化することができます。
名前 |
画像 |
説明 |
---|---|---|
Current State Time |
|
ステート マシン内の現在アクティブなステートの現在の経過時間 (秒) を取得します。この出力は、ステート マシンの アクティビティ インジケーター と同様の情報を提供します。
|
Get Current State Name |
|
ステート マシン内で現在アクティブなステートの名前を取得します。 |
Get Relevant Anim Time |
|
この遷移先のステート内で最も関連性の高いアニメーションの現在の経過時間 (秒単位) を取得します。 ステートには、同等の関連性を持つ複数のアニメーションが存在する可能性があるため、それらのアニメーションをチェックしたり、関連性のある関数で使用しないようにすることができます。これを行うには、ステート グラフを開き、除外したいアニメーション ノード (シーケンス プレイヤー、ブレンド スペース、エイム オフセットなど) を選択し、[Details (詳細)] パネルで [Ignore for Relevancy Test] をオンにします。
|
Current Time |
|
前のステートからアニメーションの現在の経過時間 (秒単位) を取得します。この関数は、関連性ではなく、特定のアニメーションを直接参照する必要がある場合に役立ちます。 |
Get Relevant Anim Time Remaining |
|
この遷移先のステート内で最も関連性の高いアニメーションの現在の残り時間 (秒単位) を取得します。 |
Time Remaining |
|
この遷移先のステート内のアニメーションの現在の残り時間 (秒単位) を取得します。この関数は、関連性ではなく、特定のアニメーションを直接参照する必要がある場合に役立ちます。 |
アニメーション通知関数
また、遷移グラフ内で使用できる Animation Notify 関数もあります。これらの関数は、遷移グラフを右クリックして、Was Anim Notify… 関数を選択することで追加することができます。
名称 |
説明 |
---|---|
Was Anim Notify Name Triggered… |
名前で指定された スケルトン通知 が前のティックでトリガーされた場合は、true を返します。 |
Was Anim Notify State Active… |
クラスで指定された 通知ステート が前のティックでアクティブであった場合は、true を返します。 |
Was Anim Notify Triggered… |
クラスで指定された 通知 が前のティックでアクティブであった場合は、true を返します。 |
通知関数チェックの主な違いは、次のように検索を行うかどうかです。
In any state。すべてのアクティブなステートマシンで通知を検索します。
In the source state。前にアクティブだったステート (遷移元ステート) で通知を検索します。
In the State Machine。特定のステート マシンで通知を検索します。
遷移の中断
遷移中に別のステートがアクティブになると、その遷移が「中断」され、代わりに新たなステートに遷移します。この中断が発生した場合、特定の アニメーション通知 を中断にリンクさせることができます。これにより、中断が発生したときに、それらの通知が実行されるようになります。
遷移中断の通知動作を設定するには、遷移を選択し、[Details] パネルで [Transition Interrupt (遷移中断)] のプロパティを見つけます。
中断にリンクする Notify または Notify State Class クラスを指定することができます。Notify State を使用すると、中断により、後続のフレームで 開始 通知イベントと 終了 通知イベントが順に実行されます。
その他のプロパティは、「モンタージュ通知」ページで参照できます。
遷移ブレンドのタイプ
ステートをどのように遷移させるかを決定する際に使用するステート遷移ブレンドには、主に次の 3 つのタイプがあります。標準ブレンド、慣性化、または カスタム です。これらのタイプは、遷移を選択し、[Details] パネルの [Blend Logic] プロパティで選択することができます。
標準ブレンド
[Standard Blend (標準ブレンド)] は、デフォルトの遷移オプションで、期間、カーブ、およびその他の基本的なコントロールの設定が含まれています。これらの設定を見つけて、調整するには、遷移を選択して、[Details] パネルの [Blend Settings (ブレンド設定)] カテゴリを選択します。
名称 |
説明 |
---|---|
Transition Crossfade Sharing |
このドロップダウン メニューを使用すると、異なる遷移間で [Blend Settings] のプロパティを共有することができます。新しい共有設定を作成するには、[Promote to Shared (共有に昇格)] をクリックし、設定名を入力して、Enter キーを押します。これで、他の遷移でこの設定にアクセスできるようになります。この設定は完全に共有されるため、ある遷移の設定を編集すると、他のすべての遷移に影響します。 |
Duration |
遷移にかかる時間を秒単位で指定します。 |
Mode |
この遷移でブレンドするときに使用するカーブのタイプです。各オプションで Ctrl + Alt を押すと、カーブの形状のプレビューが表示されます。 |
Custom Blend Curve |
[Mode] が [Custom] に設定されている場合、ここでは、この遷移でブレンドするときに、カーブの形状として使用する、カスタムで作成されたカーブ アセットを指定することができます。 |
Blend Profile |
この遷移の間、特定のボーンを他のものより迅速にブレンドする必要がある場合、ここで ブレンド プロファイル をオプションで指定することができます。 |
慣性化
あるステートから別のステートに単純にブレンドするのではなく、慣性化 は、新しいアニメーションへの切り替え時に発生するアニメーションの速度と加速度が、動きを進めるために使用される場合に使用できます。詳細については、「慣性化」を参照してください。
ブレンド タイプとして慣性化を使用する場合、アニメーション グラフで必ず Inertialization ノード を使用する必要があります。このノードは、ステート マシンが評価された後に配置してください。
慣性化は、隣接する複数のステートで使用されるアニメーションによっては、必ずしも、遷移で適切な結果が得られるわけではありません。慣性化ブレンドを使用する際に注意する必要のある一般的なルールは、以下のとおりです。
ブレンド時間は短く維持し、0.4 秒未満が最適である。
ポーズが極端に異なる場合は、慣性化を使用しない。
カスタム
カスタム ブレンドは、独自のアニメーション グラフ レイヤーでグラフ化して、カスタマイズできるブレンドで、その期間とカーブ形状は 標準ブレンド設定 で決定されます。
[Blend Logic] が [Custom] に設定されている場合、ドロップダウン メニューの横にある [Edit Blend Graph (ブレンド グラフの編集)] をクリックするか、[My Blueprint (マイ ブループリント)] 内のカスタム ブレンドグラフをダブルクリックして、グラフを開きます。
カスタム ブレンド グラフ内で、以下の特殊関数を使用して遷移時間とステートの重み情報を読み取り、グラフに通知することができます。
名前 |
画像 |
説明 |
---|---|---|
State Weight |
|
前のステートのブレンドの重みを取得します。この数値は、遷移期間中に 1 から 0 に徐々に減少します。 |
Get Transition Time Elapsed |
|
指定した遷移の経過時間 (秒単位) を取得します。 |
Get Transition Time Elapsed (ratio) |
|
指定された遷移のクロスフェード時間に対する経過時間を比率として取得します。つまり、この数値は、遷移期間中に 0 から 1 に徐々に増加します。 |
Get Transition Crossfade Duration |
|
指定した遷移のクロスフェード時間を取得します。これは、[Blend Settings] > [Duration] プロパティで使用される数値です。 |
カスタム ブレンドを使用すると、さまざまなブレンド ロジックを作成できます。簡単な例として、通常の Blend ノードと Get Transition Time Elapsed (ratio) 関数を併用することで、 標準ブレンド をレプリケートすることができます。
遷移のプロパティ
遷移には、次のプロパティがあります。
名称 |
説明 |
---|---|
Automatic Rule Based on Sequence Player in State |
このプロパティを有効にすると、前のステートで最も関連性の高いアニメーションが終了したときに、この遷移が自動的に実行されます。ブレンドの期間も遷移時間に含まれるため、アニメーションが 2.0 秒で、遷移時間が**0.5 秒の場合、1.5** 秒経過後に遷移が実行されます。 |
Sync Group Name to Require Valid Markers Rule |
ここで Sync Group (同期グループ) 名を指定すると、現在のステートに有効な Sync Marker (同期マーカー) を持つアニメーションがある場合に限り、この遷移が使用されます。通常の遷移ルールも引き続き適用されます。 |
Priority Order |
遷移の優先順位。複数の遷移の条件が同時に成立している場合は、優先順位の最も小さいものが選択されます。 |
Bidirectional |
この設定はサポートされておらず、現在は機能しません。 |
Blend Logic |
どの 遷移ブレンド タイプ を使用するか。 |
Transition Rule Sharing |
このドロップダウン メニューを使用すると、異なる遷移間で 遷移グラフ を共有することができます。新しい共有設定を作成するには、[Promote to Shared (共有に昇格)] をクリックし、設定名を入力して、Enter キーを押します。これで、他の遷移でこの設定にアクセスできるようになります。グラフは完全に共有されるため、特定の遷移のグラフを編集すると、他のすべての遷移に影響します。 |
Transition Crossfade Sharing |
このドロップダウン メニューを使用すると、異なる遷移間で [Blend Settings] のプロパティを共有することができます。新しい共有設定を作成するには、[Promote to Shared (共有に昇格)] をクリックし、設定名を入力して、Enter キーを押します。これで、他の遷移でこの設定にアクセスできるようになります。この設定は完全に共有されるため、ある遷移の設定を編集すると、他のすべての遷移に影響します。 |
Duration |
遷移にかかる時間を秒単位で指定します。 |
Mode |
この遷移でブレンドするときに使用するカーブのタイプです。各オプションで Ctrl + Alt を押すと、カーブの形状のプレビューが表示されます。 |
Custom Blend Curve |
[Mode] が [Custom] に設定されている場合、ここでは、この遷移でブレンドするときに、カーブの形状として使用する、カスタムで作成されたカーブ アセットを指定することができます。 |
Blend Profile |
この遷移の間、特定のボーンを他のものより迅速にブレンドする必要がある場合、ここで ブレンド プロファイル をオプションで指定することができます。 |
Transition Interrupt |
遷移中断 の設定が含まれます。 |
Start Transition Event (Custom Blueprint Event) |
[Custom Blueprint Event] フィールドで使用されている名前を持つ スケルトン通知 を作成します。この通知は、遷移が開始されると実行されます。通常のスケルトン通知と同様に、アニメーション ブループリントの イベント グラフ で作成することで、イベントにアクセスできます。 |
End Transition Event (Custom Blueprint Event) |
[Custom Blueprint Event] フィールドで使用されている名前を持つスケルトン通知を作成します。この通知は、遷移が終了すると実行されます。 |
Interrupt Transition Event (Custom Blueprint Event) |
[Custom Blueprint Event] フィールドで使用されている名前を持つスケルトン通知を作成します。この通知は、遷移が 中断 すると実行されます。 |