グラフエディタのステートマシン

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

ステートマシンは、アニメーションノードをアイドル、歩行、走行、ジャンプなどの名前付きステートに結合します。アクティブなステートを再生し、遷移条件がtrueに評価されると別のステートにブレンドします。ステートマシンを使用して、遷移ロジックをLuauで記述することなく、どのアニメーションが互いに続くことができるかを定義します。

各ステートは、ステートマシンの入力に接続されます。ステートはクリップ、ブレンドノード、または別のステートマシンであることができます。ステートマシンは、アクティブなアニメーションポーズまたは遷移中の2つのポーズのブレンドを出力し、それをグラフ内の次のノードに接続します。

前提条件

ステートマシンを作成する前に、アニメーショングラフエディタに慣れておき、それを開いてアニメーショングラフを作成する方法を理解してください。

ステートマシンの作成

以下の例では、JumpFallLandRunExampleからの3つのステート、Locomotion、Fall、LandIdleを使用します。キャラクターは通常に移動し、空中にいるときに落下アニメーションに切り替え、着地アニメーションを再生してからロコモーションに戻ります。これらの手順はステートマシンに焦点を当てており、ロコモーション、落下、着地のためのアニメーションノードから始めます。

  1. グラフエディタで右クリックし、ノードの挿入 ⟩ ステートマシンを選択します。

    グラフエディタのコンテキストメニューで、ノードの挿入サブメニューが開いており、ステートマシンが選択されています。
  2. ステートマシンノードで開くをクリックします。ステートマシンビューで、ステートの作成を使用して、Locomotion、Fall、LandIdleという3つのステートを追加します。

    ステートマシンビューで、ステートの作成ボタンとエントリおよび任意のステートノードがあります。
  3. グラフに戻るをクリックし、アニメーションノードを対応するステートマシンの入力に接続します:

    • Locomotion:ロコモーションアニメーションを接続します。参照グラフでは、Blend1DNodeという名前のIdleRunBlendを使用して、Speedに基づいてアイドルと走行アニメーションをブレンドします。
    • Fall:落下するClipNodeを接続し、再生モードをEnum.AnimationNodePlayMode|OnceAndHoldに設定して、キャラクターが着地するまで最終ポーズを保持します。
    • LandIdle:着地クリップを接続し、再生モードをEnum.AnimationNodePlayMode|OnceAndHoldに設定して、終了してロコモーションに戻ることができるようにします。

    ステートマシンの出力をグラフ出力のポーズ入力に接続します。

    IdleRunBlend、Fall、およびLandIdleノードがステートマシンノードのLocomotion、Fall、およびLandIdle入力に接続されており、その出力がグラフ出力に接続されています。
  4. ステートマシンビューを再度開き、(エントリ)からLocomotionへの遷移をドラッグします。グラフが開始されると、このステートでステートマシンが開始します。

    エントリノードがLocomotionステートに接続されています。
  5. Groundedという名前のブールグラフパラメータを追加し、trueに設定します。このパラメータは、キャラクターが地面にいるかどうかを示します。

  6. 次の遷移を追加します。ソースステートから宛先ステートに接続をドラッグし、各遷移を設定します:

    • LocomotionからFall:待機を式に設定し、式をnot Groundedに、長さを0.2秒に設定します。キャラクターが地面を離れると、落下アニメーションが始まります。
    • FallからLandIdle:待機を式に設定し、式をGroundedに、長さを0.1秒に設定します。キャラクターが地面に触れると、着地アニメーションが始まります。
    • LandIdleからLocomotion:待機を終了に設定し、いつをEnum.AnimationNodeTransitionWhen|BeforeFinishedに、長さを0.2秒に設定します。着地アニメーションの最後の0.2秒間に、ステートマシンはロコモーションに戻るブレンドを開始します。
    LandIdleからLocomotionへの遷移設定で、長さが0.2、曲線が線形、待機が終了、いつが終了前に設定されています。
  7. すべての遷移の曲線はデフォルト(Linear)のままにします。グラフをプレビューし、Groundedをfalseに変更してFallに入り、次にtrueに戻してLandIdleを再生し、Locomotionに戻ります。

  8. キャラクターが離れたり地面に触れたりする際に、ゲームプレイコードからGroundedを更新します。ロコモーションブレンドがSpeedを使用している場合、キャラクターが移動する際にそのパラメータを更新します。パラメータワークフローについては、API統合を参照してください。

  9. ジャンプや追加の着地ステートでステートマシンを拡張して、完全な移動グラフを作成します。JumpFallLandRunExampleには、立っているときと走っているときのための別々のジャンプ、さらに移動と落下速度に基づく異なる着地が含まれています。

ステートマシンのプロパティ

ステートマシンノードのプロパティ

入力
  • State1...StateN:各ステートを定義するアニメーションノード。ステートの名前は、ステートマシンノードへの入力の名前と一致する必要があります。
プロパティ
プロパティタイプ説明
EntryStateObjectValueグラフが開始されるときにアクティブなステートを指すAnimationNodeDefinitionを指すObjectValue。
イベントデータ
  • イベント処理:アクティブなステートからのイベントは、重みが変更されることなく通過します。
  • イベント発生:アクティブなステートからのイベントのみが通過します。遷移中、イベント発生はグローバルイベントルールに従います。

遷移プロパティ

遷移には1つ以上のソースステート、宛先ステート、および条件があります。アクティブなステートがソースステートと一致すると、ステートマシンは条件をチェックします。条件がtrueに評価されると、宛先ステートにブレンドします。

待機は遷移条件UIを決定します。式(Enum.AnimationNodeWaitFor|Trigger)を選択すると、式ボックスが表示されます。式は、ShouldJumpのようなブールグラフパラメータを直接参照するか、Speed >= 12のような条件を評価できます。終了(Enum.AnimationNodeWaitFor|Finished)を選択すると、いつのドロップダウンが表示されます。

複数の遷移が真の式を持つ場合、ステートマシンは最も高い優先度値を持つ遷移を最初に評価します。優先度が同じ場合は、ランダムに1つの遷移を選択します。競合する遷移に異なる優先度を割り当てて、結果を予測可能にします。

プロパティタイプ説明
FromObjectValue遷移を開始できるステートを指すAnimationNodeDefinitionを指すObjectValue。**(任意)**遷移の場合は、このプロパティを設定しないでください。
ToObjectValue宛先ステートを指すAnimationNodeDefinitionを指すObjectValue。
WaitForEnum.AnimationNodeWaitForどの遷移条件UIが表示されるかを決定します。Enum.AnimationNodeWaitFor|Triggerは式ボックスを表示します。Enum.AnimationNodeWaitFor|Finishedはいつのドロップダウンを表示します。
WhenEnum.AnimationNodeTransitionWhen待機が終了のときに利用可能です。Enum.AnimationNodeTransitionWhen|Finishedを選択すると、ソースステートが終了した後に開始され、Enum.AnimationNodeTransitionWhen|BeforeFinishedを選択すると、ソースステートが終了する1つの期間前にブレンドを開始します。
Expression文字列待機が式のときに利用可能です。ブールグラフパラメータまたは式で、trueに評価されると遷移が開始されます。サポートされている内容については式を参照してください。
Priority数値複数の式が真であるときに使用される順序。高い値が優先されます。有効な値は0から65,535までです。
Duration数値宛先ステートにブレンドする時間(秒単位)。デフォルトは0.15秒です。
CurveEnum.PoseEasingStyleブレンド中に使用されるイージング。LinearとCubicV2のみがサポートされています。デフォルトはLinearです。
©2026 Roblox Corporation。Roblox(ロブロックス)、RobloxロゴおよびPowering Imaginationは、米国並びにその他の国における登録商標および非登録商標です。