aiaichach tuiseki

【UE】AI活用ガイド|CPUアニメーション機能(歩行・追跡)

みなさんこんにちは。

NakaRyoです。

今回は「AI活用ガイド」のPart2として、CPU(敵キャラクター)のアニメーション設定について解説します。

前回の記事ではAI制御(移動・感知など)を実装しましたが、

今回はその続編として歩行・追跡・攻撃シーンのアニメーションを加えていきます。

Part1(AI実装編)をまだご覧になっていない方は、そちらを先に確認しておくとスムーズです。


アニメーションブループリントの作成(歩行動作)

Part1で作成した「BP_Enemy」はIdle(待機)状態のまま移動しているため、

ここに歩行アニメーションを追加します。

AIフォルダ上で右クリック → アニメーション → アニメーションブループリント を選択。

image

スケルトンにはデフォルトの「SK_Mannequin」を指定します。

image

作成したファイルを「ABP_Enemy」にリネームしましょう。

image

アニメーションブループリント編集(Idle → Walk)

ABP_Enemy をダブルクリックして開き、AnimGraph に移動します。

グラフ上で「State Machine」を検索・追加します(アニメーション → ステートマシン → State Machine)。

image

追加したステートマシンを「Root State Machine」にリネーム。

Root State Machine の出力ピンを Output Pose の入力ピンへ接続。

image

ステートマシン内部の設定

Root State Machine をダブルクリックして内部に入ります。

右下のアセットブラウザで「MM_Idle」と検索し、グラフ上にドラッグ&ドロップ。

Entry ノードと接続します。

image
image

※MM_IdleはThirdPersonテンプレートにデフォルトで入っています

次に「MF_Unarmed_Walk_Fwd(デフォルトテンプレート内)」を同様に配置し、

MM_Idle → MF_Unarmed_Walk_Fwd をトランジション接続します。

image
image

Idle → Walk の遷移条件設定

MM_Idle → MF_Unarmed_Walk_Fwd

トランジションマークをクリックして編集画面に入ります。

image

変数を2つ作成します

Speed(Float)

Walk_Target(Float) デフォルト値:10.0

ノード手順

Get SpeedとGet Walk_Targetをグラフ上に配置

Greater Equal(>=)をグラフ上に配置

Get SpeedとGreater Equal Aピンを接続

Get Walk TargetとGreater Equal Bピンを接続

Greater EqualのReturn ValueピンとResultのValueピンを接続

image

コンパイルして保存します。


Walk → Idle の遷移条件設定

MF_Unarmed_Walk_Fwd → MM_Idle トランジション接続

image

MF_Unarmed_Walk_Fwd → MM_Idle のトランジションマークを

ダブルクリックし編集画面に入ります。

image

ノード手順

Get SpeedとGet Walk_Targetをグラフ上に配置

Less(<)をグラフ上に配置

Get SpeedとLess Aピンを接続

Get Walk TargetとLess Bピンを接続

LessのReturn ValueピンとResultのValueピンを接続

image

コンパイルして保存します。

Root state machine内部のグラフ上で

MF_Unarmed_Walk_Fwdをダブルクリックし編集画面を開きます。

image

MF_Unarmed_Walk_Fwd編集画面で、

MF_Unarmed_Walk_Fwdをクリックし選択状態で、

詳細⇒Loop Animation欄をチェック入れTrue状態にします。

image

イベントグラフで移動速度を更新

ABP_Enemy のイベントグラフを開きます。

ノード設定

Try Get Pawn OwnerのReturn ValueピンとGet VelocityのTargetピンを接続

Get VelocityのReturn ValueピンとVector Length XYのAピンに接続

Vector Length XYのReturn ValueピンとSet SpeedのSpeedピンに接続

Event Blueprint Update Animationの実行ピンとSet Speedの実行ピンを接続

image

コンパイルして保存します。

これにより、キャラクターの移動速度に応じてアニメーションが切り替わるようになります。


BP_Enemyへのアニメーション割り当て

BP_Enemy を開き、コンポーネントの「Mesh」を選択。

image

詳細パネルの「Animation Mode」を Use Animation Blueprint に変更。

「Anim Class」に ABP_Enemy を指定。

image

コンパイルして保存します。

シミュレーション実行後、歩行アニメーションが再生されれば成功です。

aiouyou1

CPUのプレイヤー追跡機能の追加

続いて、敵(CPU)がプレイヤーを検知・追跡する処理を追加します。

Blackboard の設定

BB_Enemy を開きます。

新規キーを作成 → 「Bool」型を選択 → 名前を FindPlayer に設定。

image
image

保存します。


キャラクターブループリントの設定(BP_Enemy)

BP_Enemy を開き、「新規コンポーネント追加」→「Pawn Sensing」を選択し追加します。

image
image

詳細パネルで以下設定をおこないます。

Sight Radius:3000

Peripheral Vision Angle:50

image

「イベント」カテゴリから On See Pawn の+をクリックし、イベントグラフへ追加。

image

On See Pawnノード構成

On See Pawnの実行ピンとCast to BP_ThirdPersonCharacterの実行ピンを接続

On See PawnのPawnピンとCast to BP_ThirdPersonCharacterのObjectピンを接続

image

Cast to BP_ThirdPersonCharacterの実行ピンとSet Value as Boolの実行ピンと接続

Set Value as BoolのTargetピンとGet BlackBoardのReturn Valueピンを接続

Set Value as BoolのKey NameピンとMake Literal NameのReturn Valueピンを接続

Make Literal NameのValue欄に“FindPlayer”を入力

※ここの入力は先ほどブラックボードで作成したkeynameと同一にさせてください。

Bool Valueをチェックいれる(True化)

image

コンパイルして保存します。


Behavior Tree(BT_Enemy)設定

条件分岐の設定

BT_Enemy を開く。

Sequence ノードを右クリック → 「デコレーター追加」→「Blackboard」を選択。

image
image

詳細パネルで以下を設定:

オブザーバーを中止:Self

Key Query:Is Not Set

Blackboard Key:FindPlayer


プレイヤー検知時の処理

先ほどの Sequence+Decorator をコピーします。

image

Root の下に「Selector」を追加し、Rootと接続

image

コピーしたBlackBoard Based ConditionとSequenceを②とし、

詳細設定でKey QueryをIs Setに変更します。

image
    image

    SelectorとBlackBoard Based Condition・Sequence①とBlackBoard Based Condition・Sequence②を接続します

    image

    保存します。


    追跡タスクの追加

    BTTask_BlueprintBase から新規タスクを作成 → 名前を「BTTask_Chase」に変更。

    image
    image

    編集画面を開き、以下のノードを設定

    BTTask_Chaseノード構成

    マイブループリントの関数⇒オーバライドをクリックし、

    Receive Excute AIを選択します。

    image

    Receive Excute AIの実行ピンとAI Move Toの実行ピンを接続

    Receive Excute AIのControlled PawnピンとAI Move ToのPawnピンを接続

    Get PlayerCharacterのReturn ValueピンとAI Move ToのTarget Actorを接続

    image

    AI Move ToのOn SuccessピンとFinish Execute①の実行ピンを接続

    Finish Execute①のSuccessにチェックを入れる(True化)

    AI Move ToのOn FailピンとFinish Execute②の実行ピンを接続

    Finish Execute②のSuccessは空欄のまま(False化)

    image

    コンパイルして保存します。

    BT_Enemy を開き、ビヘイビアツリーの編集画面で、

    Sequence② の下に先ほど作成したBTTask_Chaseを追加します。

    image

      シミレーションボタンを押して、

      以下のようにプレイヤーの後をCPUが追跡してくれば成功です

      aidouga2

      まとめ

      今回の記事では、Unreal EngineでAIキャラクター(CPU)が

      歩行・追跡アニメーションを切り替える実装手順を紹介しました。

      アニメーションブループリントでのステート遷移、

      Pawn Sensingを使ったプレイヤー検知、Behavior Treeとの連携による

      動的制御まで、実践的なAI挙動の基礎が網羅されています。

      次回は、攻撃アニメーションとダメージ処理の追加を行い、よりリアルな戦闘AIを完成させていきます。

      コメントする

      メールアドレスが公開されることはありません。 が付いている欄は必須項目です