Nodes

AI システムには、AI を作成するためのノードが多数組み込まれています。以下は、ノードの目的の概要を示しています。ノードの詳細については、インスペクターの情報表示アイコンをクリックしてください。

Action
Add Item指定されたアイテムをインベントリに追加します。
Contains Itemインベントリにこのアイテムはが含まれているか?
Use Itemアイテムを使用してインベントリから削除します。
Cannon Enter大砲に入ります。
Cannon Exit大砲のから出ます。
Follow Graph Points指定された速度でポイントに移動します。ターゲットは TargetPoints である必要があります。
Follow Platform WallsAI は角を曲がってプラットフォームや壁の周りを歩きます。確率が 1 の場合、常に次の角に移動することになりますが、そうでない場合は方向が変わる可能性があります。
Follow TargetAIは指定されたターゲットを追跡します。
Guard Territoryターゲットが領域内にある場合、AI はターゲットを追跡します。そうでない場合、AI はガード ポイントに移動します。ターゲットが停止距離内にある場合、これはSuccessを返します。
Ignore Block UnitsAI は、経路探索パスに沿った他の AI ユニットを無視またはブロックします。
PathfinderAI は、経路探索アルゴリズムによって生成された経路をたどります。これは重力と連動するため、プラットフォーマーに最適です。
Pathfinder BasicAI は、経路探索の基本アルゴリズムによって生成された経路に従います。重力の影響は無視されます。
JumpAIはジャンプをします。
Jump ToAIは指定されたターゲットに向かってジャンプします。
Jump In Objectプレイヤーはこのオブジェクトに飛び込んで AI から隠れることができます。
Jump Out Objectボタンを押すとプレイヤーはオブジェクトから飛び出します。
Push Backダメージを受けると、AI は押し戻されます(フラッシュします)。
Monitor Variableブラックボード変数の値が変更されたかどうかを確認します。通常は float 変数に使用されます。
Monitor World Variableワールド変数の値が変わったかどうかを確認します。これは Health でも機能します。
Apply Character Velocityこの AI にキャラクターの速度を適用します。
Apply Gravityこれは重力をシミュレートします。主に移動するプラットフォームで必要です。
Control Playerプレイヤーをポイントに移動して、X 方向に制御します。これにより、プレイヤーの入力もブロックされます。
Control Player Transformプレイヤーのトランスフォームを一連のポイントに沿って移動します。これらのポイントは AI に対してローカルです。
IdleAI がただ待機するアクションがあると便利な場合があります。
Indefinite WalkAI が壁や空中の隙間にぶつかると、歩く方向が変わります。
Lets WiggleLets Wiggle トゥイーンを実行します。この AI が移動するプラットフォームである場合は、その位置のみを変更する必要があります。
Melee Attack近接攻撃を実行します。
MoveAI は指定された速度で移動します。
Nullify GravityAI に対する重力の影響を停止します。
Rotate Around指定されたターゲットを中心に回転します。
Rotate Position中心点から指定された半径で位置を回転します。
Scene Door Enterシーンに入ると、プレイヤーはドアの位置に配置されます。
Scene Door Exitプレイヤーがドアエリアに入ると、シーン管理コンポーネントを呼び出して指定されたシーンが読み込まれます。
Set Transform位置、回転、スケールを即座に、または lerping によって設定します。
ShakeAI が振動します。オブジェクトが静止している場合にのみ振動します。
Water FloatAIは水面上に浮かびます。
Find Collider指定されたレイヤー上のターゲットコライダーを検索します。
Face Target物理結果のリストから AI に最も近いターゲットを取得し、このターゲットへの参照を設定します。
Get Nearest Targetターゲットの位置が指定された距離だけ変化した場合に成功を返します。
Get Random Targetリストからランダムなターゲットを取得し、このターゲットへの参照を設定します。
Nearest 2D Results物理結果のリストから AI に最も近いターゲットを取得し、このターゲットへの参照を設定します。
Target Changedターゲットの位置が指定された距離だけ変化した場合に成功を返します。
Add To List指定された項目をリストに追加します。
Animation SignalAI のアニメーション信号を true に設定します。
BoxCollider2D SizeBoxCollider2D のサイズとオフセットを変更します。
Branch On Object Tagこれはオブジェクトのタグを読み取り、指定された状態にジャンプします。必要な数のオプションを作成します。
Captured By YoshiこのAIはヨッシーに捕獲される可能性があります。
Character Animation Signal指定された文字に対して次のアニメーション信号を true に設定します。
Chainゲームオブジェクトから作成されたチェーン。
Clock指定された時間待機します。
Enable Behaviourこれにより、指定された動作またはレンダラーが有効または無効になります。
Enable TreeBehaviorTree の実行を一時停止または削除します。また、BehaviorTree に属するゲームオブジェクトのアクティブ状態を指定します。
Flip Children Objectsこの AI の子オブジェクトを AI の x 方向に反転します。これにより、x スケールが反転します。これを Always 状態内で実行します。
Go To Next State別の状態にジャンプします。作業中のノードがステートにジャンプできない場合に便利です。
IncDec Float指定された量だけ float 変数を増減します。
Kill AIAI のコライダーとスプライト レンダラーを無効にします。
On Eventイベントが呼び出された場合
PauseCollisionsワールド衝突を一時停止します。有効にした場合、Translate を使用して変換を移動するかどうかを選択します。
Player Death指定された時間、死亡アニメーションを再生します。これにより、プレイヤーの入力がブロックされ、コライダーが無効になります。
Random Lootリストからランダムなアイテムをインベントリに追加します。
Remove From List指定された項目をリストから削除します。
Repeat繰り返し値で指定された回数実行され、成功が返されます。
ResetAIの位置とhealthがリセットされます。WorldBoolまたはTransformTrackerが存在し、trueの場合、AIは死亡し、非アクティブ化されていると見なされます。その場合、これは成功を返します。
Set As Child指定された変換を AI の子として設定するか、AI の子として削除します。
Set Directionキャラクターの方向を設定します。
Set Valueブラックボードデータの値を設定します。
Set Value From blackboardブラックボードデータの値を別のブラックボード変数の値に設定します。
Set World Float At Rate指定されたレートでワールドfloat値を増加または減少します。
Skip A Frameこれは 1 フレーム待機してから Success を返します。
Spawn GameObject指定された位置にゲームオブジェクトを生成します。
Spawn PointAI をシーンの開始時の位置にリセットします。
Sprite Colorこれにより、スプライトの色が新しい色に変更されます。
Wait For Player Inputプレイヤーが領域に入り、ボタンが押されるまで待ちます。
World EffectAI の位置でワールドエフェクトを呼び出します。
Damage Effect敵を遅くし、ダメージを与え、指定されたアニメーション信号を持続時間だけ再生します。
Damage Flashダメージフラッシュします。
Composite
Parallelすべての子ノードを同時に実行します。子ノードの 1 つが実行されている限り、実行中を返します。すべての子ノードが完了すると、1 つの子が成功した場合はSuccessを返し、そうでない場合は失敗を返します。
Parallel Successいずれかの子ノードが成功を返すまで、すべての子ノードを同時に実行します。すべてが失敗した場合は失敗を返します。
Parallel Success Allすべての子ノードが成功を返すまで、同時に実行します。すべてが成功しなかった場合は失敗を返します。
Random Selectorこれにより、ランダムに 1 つの子ノードが実行されます。
Random Sequenceこれにより、ノードのリストがシャッフルされ、実行順序が常にランダムになります。
Selectorこれにより、リスト内のすべてのノードが、成功が返されるまで実行されます。
Sequenceこれは、失敗が返されるまでリスト内のすべてのノードを実行します。
Decorator
Delay一定時間遅延後に子ノードを実行します。
Inverterこれにより、子ノードの出力ロジックが反転されます (Running を除く)。割り込みロジックはこのデコレータで機能します。
Repeaterこれにより、繰り返し値で指定された回数だけ子ノードが実行されます。
Runningこれは常に実行中を返します。
Timerこれにより、指定された時間だけ子ノードが実行されます。
Until Failこれは、失敗が返されるまで子ノードを実行します。
Until Successこれは、Success が返されるまで子ノードを実行します。
Conditional
Find TargetAI またはテリトリーに関連して指定されたターゲットを検索します。
List Logic指定されたリストのサイズを値と比較します。
Variable Logicこれは float 変数を float 値と比較します。
World Float Logicワールド フロートを float 値と比較します。
CircleCastPhysics2D を使用して CircleCast を実装します。結果には Nearest2DResults でアクセスできます。
LineCastPhysics2D を使用して LineCast を実装します。結果には Nearest2DResults でアクセスできます。
OverlapBoxPhysics2D を使用して OverlapBox を実装します。結果には Nearest2DResults でアクセスできます。
OverlapCirclePhysics2D を使用して OverlapCircle を実装します。結果には Nearest2DResults でアクセスできます。
OverlapColliderPhysics2D を使用して OverlapCollider を実装します。結果には Nearest2DResults からアクセスできます。
OverlapPointPhysics2D を使用して OverlapPoint を実装します。結果には Nearest2DResults からアクセスできます。
RayCastPhysics2D を使用して RayCast を実装します。結果は Nearest2DResults でアクセスできます。
Layer ResultSingle Hit を使用してキャストされたレイは、結果のオブジェクトが指定されたレイヤーに属しているかどうかを比較できます。
Touching Layers指定されたコライダーが指定されたレイヤー内の他のコライダーに接触しているかどうかを確認します。
Collision Statusキャラクター/AI が何と対話しているかを確認します。
Return Failureこれは常に失敗を返します。
InputButtonSO GetInputButtonSO が true の場合、成功を返します。
Input Get入力 KeyDown または MouseDown を取得します。
Is Quest Activeクエストがアクティブかどうか
Is Quest Completeクエストが完了しているかどうか
Positionalターゲットに対する AI の位置を確認します。
Field Of View指定されたターゲットが視野内にある場合は成功を返します。
Has Passengersこの動くプラットフォームに乗ってるキャラがいるかどうか

Create Nodes

最も一般的に作成されるノードは、条件付きノードとアクション ノードです。スクリプトを作成したら、それを AI/BehaviorTree/Nodes フォルダーに配置すると、AI システムで使用できるようになります。以下のテンプレートに従って、独自の機能をコーディングしてください。最初の例は、AI に速度を追加するだけの Move Action ノードです。

 using UnityEngine;

 namespace TwoBitMachines.FlareEngine.AI// Include this namespace
 {
    public class Move : Action // Specify the type of node - Action/Conditional/Composite/Decorator
    {
            [SerializeField] public Vector2 velocity;

            // Use this method to implement the behavior
            public override NodeState RunNodeLogic (Root root)
            {
                    if (nodeSetup == NodeSetup.NeedToInitialize)
                    {
                    //       Any member fields that need to be reset/initialized go here.
                    }

                    root.velocity += velocity;// Root is basically the AI
                    return NodeState.Running; // Return Running
                                              // If the behavior completes, return Success or Failure.
            }

            // Use this to reset important variables
            public override void OnReset ( )
            {

            }

// Root contains a few variables to be aware of

// root.velocity  -- the velocity of the AI, read and write to it
// root.direction -- the direction of the AI on the x-axis, read and write to it
// root.position  -- the position of the AI in the game world, read only

// root.hasJumped -- set true if you have added a jumping force to the AI's root.velocity.y
// root.onSurface -- set true if you are creating a hard surface for the AI to stand on

// root.signals.Set ("relevantSignalName") -- set an animation signal if necessary
// root.world     -- reference to WorldCollision, read settings like onGround, onMovingPlatform, etc.
// root.gravity   -- reference to Gravity, if jumping use root.gravity.SetJump (velocity.y);
//                   see the Jump node for more information
// root.movingPlatform   -- reference to MovingPlatform if the AI is of this type, use it to read
//                          hasPassengers or passengerCount
    }

  }
using UnityEngine;

namespace TwoBitMachines.FlareEngine.AI
{
     // This is a Conditional node. This will simply check if the AI is on the ground.
     // This class doesn't actually exist, but it can be created using this code
     // to get this functionality.
     public class AIOnGround : Conditional
     {
             public override NodeState RunNodeLogic (Root root)
             {
                     return root.world.onGround ? NodeState.Success : NodeState.Failure;
             }
     }
 }
using UnityEngine;

namespace TwoBitMachines.FlareEngine.AI
{
    // This is a Decorator, and it will run its child node until it fails.
    public class UntilFail : Decorator
    {
           public override NodeState RunNodeLogic (Root root)
           {
                  NodeState nodeState = children[0].RunChild (root);
                  return nodeState == NodeState.Failure ? NodeState.Success : NodeState.Running;
           }
    }
}
タイトルとURLをコピーしました