見出し画像

[UE5] プレイヤーの移動をAIにする

さいきんUnrealEngineしてるんですけどはまったのでメモ。

UEではキャラクター毎にコントローラは一つだからプレイヤーコントローラを使うかAIコントローラを使うか切替が必要みたいです。目的地まで自動で移動したいときはキャラクターにAIコントローラを接続してAIMove系ノードで動かします。接続はPossessノードでします。ピンにつなぐマップ上のAIコントローラはGetActorOfClassノードでクラス名から参照できます。切替前にどちらも先に変数へ入れておくと参照が楽になりました。

例えばPlayerControllerを別キャラにして自身にAIControllerを接続。参照は変数へ確保済み。

ちなみにキャラクターの初期設定ではマップ設置時にAIコントローラーが作られるだけなのでスポーンしたときもAIコントローラが作られるように設定するといいですよ。
設定方法はキャラクターBPの詳細のAuto Possess AIを"Placed in World"から"Placed in World or Spawned"に設定するとOKです。文字通りスポーン時も作られる設定ですね。
推測ですがBPでスポーンしたキャラクターは大量の場合も想定してるのか初期設定ではAIコントローラが付属しないからAIMoveで動かせないようです。

キャラクターBPの詳細

最後にAIMove系は基本NaviMeshVolumeがある範囲内だけ動けるのでNaviMeshVolumeもマップ上に設置しておくことをお勧めします。

けっこう調べたけどなかなかまとまった情報が出てこなくてここらへん整理するのに3日かかりました。よくがんばったよ。

ここから後日談です。
プレイヤーコントローラを作成してカスタムすると便利でした。プレイヤーキャラクターと複数のキャラクターをAIで動かせたりUIの操作を受け付けできます。Possess ノードでコントローラを切り替えたらカメラも意図せず切り変わるのでカメラを指定するなら Set View Target With Blend でできます。
見下ろしカメラにするとパズルとかシミュレーションのゲームジャンルで使えますね。このあたりはもしかするとトップダウンテンプレート使うのが楽かもしれません。


お子様なのでピルクル買います。ピルクルが燃料です。