遷移ルール

遷移を使用してステート マシン内の複数のステート (状態) をブレンドします。

前提トピック

このページは以下のトピックへの知識があることを前提にしています。まず以下のトピックの内容についてご確認をお願いします。

遷移の設定

どのステートを相互にブレンドするかをコントロールするには、遷移 を作成します。遷移はステート マシンの構造を定義するステート間のリンクです。

transition

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

create transition

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

create transition

遷移ルール

遷移がステート間のブレンドの構造をコントロールするのに対して、遷移ルール はステートが遷移できるタイミングをコントロールします。つまり、単に遷移を定義するだけではなく、遷移する方法やタイミングを定義する必要があります。

遷移ルールは、遷移の作成時に自動的に作成されます。ステートと同様に、[My Blueprint (マイ ブループリント)] パネルか、ステート マシン グラフの 遷移アイコン をダブルクリックすることで、遷移ルールを表示したり、アクセスしたりすることができます。

transitions in my blueprint

遷移ルールでは、ブール値 (true または false) を出力する目的で、確認と比較のためにさまざまなブループリント ロジックを作成できます。true 値を使用すると、ステートが次のステートに遷移できるかどうかを決定することができます。

たとえば、Idle ステートから Run ステートに遷移し、再び Idle ステートに戻る場合は、以下のようなロジックになります。この例では、bool 変数が遷移ルールに使用されています。デフォルトのステートに戻るときは、bool の逆数が使用されます。

transition rule example

遷移ルールは、通常、Movement コンポーネントと他のキャラクター変数によって通知されます。操作可能なキャラクターに共通のプロパティを取得する方法については、「アニメーション変数を取得する方法」ページを参照してください。

意図したロジックで変数が正しく設定されたら、設定した変数の条件がゲームプレイ中に満たされることで、遷移が発生します。

transition example

遷移関数

遷移ルール グラフで、以下のような遷移専用の関数を使用して、ロジックを強化することができます。

名前

画像

説明

Current State Time

Function1.png

ステート マシン内の現在アクティブなステートの現在の経過時間 (秒) を取得します。この出力は、ステート マシンの アクティビティ インジケーター と同様の情報を提供します。

elapsed function time

Get Current State Name

Function2.png

ステート マシン内で現在アクティブなステートの名前を取得します。

Get Relevant Anim Time

Function3.png

この遷移先のステート内で最も関連性の高いアニメーションの現在の経過時間 (秒単位) を取得します。

ステートには、同等の関連性を持つ複数のアニメーションが存在する可能性があるため、それらのアニメーションをチェックしたり、関連性のある関数で使用しないようにすることができます。これを行うには、ステート グラフを開き、除外したいアニメーション ノード (シーケンス プレイヤー、ブレンド スペース、エイム オフセットなど) を選択し、[Details (詳細)] パネルで [Ignore for Relevancy Test] をオンにします。

ignore for relevancy test

Current Time

Function5b.png

前のステートからアニメーションの現在の経過時間 (秒単位) を取得します。この関数は、関連性ではなく、特定のアニメーションを直接参照する必要がある場合に役立ちます。

Get Relevant Anim Time Remaining

Function4.png

この遷移先のステート内で最も関連性の高いアニメーションの現在の残り時間 (秒単位) を取得します。

Time Remaining

Function5.png

この遷移先のステート内のアニメーションの現在の残り時間 (秒単位) を取得します。この関数は、関連性ではなく、特定のアニメーションを直接参照する必要がある場合に役立ちます。

アニメーション通知関数

また、遷移グラフ内で使用できる Animation Notify 関数もあります。これらの関数は、遷移グラフを右クリックして、Was Anim Notify… 関数を選択することで追加することができます。

notify functions

名前

説明

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 (遷移中断)] のプロパティを見つけます。

transition interrupt

中断にリンクする Notify または Notify State Class クラスを指定することができます。Notify State を使用すると、中断により、後続のフレームで 開始 通知イベントと 終了 通知イベントが順に実行されます。

その他のプロパティは、「モンタージュ通知」ページで参照できます。

遷移ブレンドのタイプ

ステートをどのように遷移させるかを決定する際に使用するステート遷移ブレンドには、主に次の 3 つのタイプがあります。標準ブレンド慣性化、または カスタム です。これらのタイプは、遷移を選択し、[Details] パネルの [Blend Logic] プロパティで選択することができます。

transition blend types

標準ブレンド

[Standard Blend (標準ブレンド)] は、デフォルトの遷移オプションで、期間、カーブ、およびその他の基本的なコントロールの設定が含まれています。これらの設定を見つけて、調整するには、遷移を選択して、[Details] パネルの [Blend Settings (ブレンド設定)] カテゴリを選択します。

standard blend

名前

説明

Transition Crossfade Sharing

このドロップダウン メニューを使用すると、異なる遷移間で [Blend Settings] のプロパティを共有することができます。新しい共有設定を作成するには、[Promote to Shared (共有に昇格)] をクリックし、設定名を入力して Enter キーを押します。これで、他の遷移でこの設定にアクセスできるようになります。この設定は完全に共有されるため、ある遷移の設定を編集すると、他のすべての遷移に影響します。

Duration

遷移にかかる時間を秒単位で指定します。

Mode

この遷移でブレンドするときに使用するカーブのタイプです。各オプションで Ctrl + Alt を押すと、カーブの形状のプレビューが表示されます。

Custom Blend Curve

[Mode][Custom] に設定されている場合、ここでは、この遷移でブレンドするときに、カーブの形状として使用する、カスタムで作成されたカーブ アセットを指定することができます。

Blend Profile

この遷移の間、特定のボーンを他のものより迅速にブレンドする必要がある場合、ここで ブレンド プロファイル をオプションで指定することができます。

慣性化

あるステートから別のステートに単純にブレンドするのではなく、慣性化 は、新しいアニメーションへの切り替え時に発生するアニメーションの速度と加速度が、動きを進めるために使用される場合に使用できます。詳細については、「慣性化」を参照してください。

ブレンド タイプとして慣性化を使用する場合、アニメーション グラフで必ず Inertialization ノード を使用する必要があります。このノードは、ステート マシンが評価された後に配置してください。

inertialization

慣性化は、隣接する複数のステートで使用されるアニメーションによっては、必ずしも、遷移で適切な結果が得られるわけではありません。慣性化ブレンドを使用する際に注意する必要のある一般的なルールは、以下のとおりです。

  • ブレンド時間は短く維持し、0.4 秒未満が最適である。

  • ポーズが極端に異なる場合は、慣性化を使用しない。

カスタム

カスタム ブレンドは、独自のアニメーション グラフ レイヤーでグラフ化して、カスタマイズできるブレンドで、その期間とカーブ形状は 標準ブレンド設定 で決定されます。

[Blend Logic][Custom] に設定されている場合、ドロップダウン メニューの横にある [Edit Blend Graph (ブレンド グラフの編集)] をクリックするか、[My Blueprint (マイ ブループリント)] 内のカスタム ブレンドグラフをダブルクリックして、グラフを開きます。

custom blend type

カスタム ブレンド グラフ内で、以下の特殊関数を使用して遷移時間とステートの重み情報を読み取り、グラフに通知することができます。

名前

画像

説明

State Weight

CustomBlend2.png

前のステートのブレンドの重みを取得します。この数値は、遷移期間中に 1 から 0 に徐々に減少します。

Get Transition Time Elapsed

CustomBlend3.png

指定した遷移の経過時間 (秒単位) を取得します。

Get Transition Time Elapsed (ratio)

CustomBlend4.png

指定された遷移のクロスフェード時間に対する経過時間を比率として取得します。つまり、この数値は、遷移期間中に 0 から 1 に徐々に増加します。

Get Transition Crossfade Duration

CustomBlend5.png

指定した遷移のクロスフェード時間を取得します。これは、[Blend Settings] > [Duration] プロパティで使用される数値です。

カスタム ブレンドを使用すると、さまざまなブレンド ロジックを作成できます。簡単な例として、通常の Blend ノードと Get Transition Time Elapsed (ratio) 関数を併用することで、標準ブレンド をレプリケートすることができます。

custom blend example

遷移のプロパティ

遷移には、次のプロパティがあります。

transition properties

名前

説明

Priority Order

遷移の優先順位。複数の遷移の条件が同時に成立している場合は、優先順位の最も小さいものが選択されます。

Bidirectional

この設定はサポートされておらず、現在は機能しません。

Blend Logic

どの 遷移ブレンドのタイプ を使用するか。

Transition Rule Sharing

このドロップダウン メニューを使用すると、異なる遷移間で 遷移グラフ を共有することができます。新しい共有設定を作成するには、[Promote to Shared] をクリックし、設定名を入力して Enter キーを押します。これで、他の遷移でこの設定にアクセスできるようになります。グラフは完全に共有されるため、特定の遷移のグラフを編集すると、他のすべての遷移に影響します。

Automatic Rule Based on Sequence Player in State

有効にすると、遷移ノードは内部時間を無視して、最も関連性の高いアセット プレイヤー ノードの残り時間と AutomaticRuleTriggerTime プロパティの値に基づいて、自動的に遷移を開始しようとします。このプロパティは、最初のアニメーション再生のより早い段階でブレンドを開始することで、より動的にステートの遷移間でブレンドするのに役立ちます。

AutomaticRuleTriggerTime

ここでは、Automatic Rule Based on Sequence Player in State プロパティも有効な場合に、自動遷移ルールを開始するタイミングを設定できます。このプロパティに設定される値は、関連するアセット プレイヤーの残り時間に応じて決まります (秒単位)。0.0 よりも小さな値は、ブレンドアウトのクロス フェード期間を使用して自動的にアニメーションから遷移します (AnimiationLength - CrossFadeDuration)。0.0 以上の値は、この値を秒単位で使用して遷移がトリガーされる時間を手動で設定します (AnimationLength - AutomaticRuleTriggerTime)。

Sync Group Name to Require Valid Markers Rule

ここで Sync Group (同期グループ) 名を指定すると、現在のステートに有効な Sync Marker (同期マーカー) を持つアニメーションがある場合に限り、この遷移が使用されます。通常の遷移ルールも引き続き適用されます。

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] フィールドで使用されている名前を持つスケルトン通知を作成します。この通知は、遷移が 中断 すると実行されます。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル