【UE4】10分で動く。建物にNPC(人物)をランダムに徘徊させよう
ずっと憧れていた「自分の建築作品の周囲にNPCをウロウロさせる方法」。軽く調べるだけでも「AI」だの「ビヘイビアツリー」だの新しい言葉が出てきて、さらに解説サイトのどれを見てもとにかく記事が長い。だからちょっと避けてました。
しかし最近になり長時間覚悟で意を決してチャレンジやってみたのですが、思ったより全然簡単で驚いています。40分でできました。
なんなんだUE4は! 最高じゃないか!(称賛)
1か所だけコケましたが、あとはほぼスムーズに設定できました。(この1か所は私がなんとなく「やんなくていいんだよね?」って判断してスキップした箇所。)
ということで忘備録。
まあでも今はTwinmotionがありますから、この情報も建築ビジュアライゼーション界隈では需要は殆どなさそうですけどね。
やってみよう
やはり記事にすると長くなります。でも変に焦らないで1こ1こやっていくとそうでもないです。ついにあなたの作品の周りを人がうろついてくれます。
ちなみにこの人物Skeletal Meshは、Unreal Engineのマーケットプレイスで無料公開されている「Scanned3DPeoplePack」です。スケルタルメッシュがあればとりあえずOKです。
動画版
人物の用意
ブループリントクラス[Character]を作成。
[Mesh]にスケルタルメッシュをセットしておきましょう。
位置を直して。さらに水色の向きが前面ですのでメッシュを回転します。これも大抵の場合必要。-90で前を向きますね。
NPCの移動範囲
NPCの移動範囲を決めます。ランダムと言っても想定外の場所に行くことはできません。
[モード]ウインドウで[Nav Mesh Bounds Volume]で検索するとでてきます。これを配置します。
普通のトリガーボックスと同じ操作感なので簡単だと思います。
これがNPCの移動可能範囲となります。最終的なNPCの歩行可能な領域は[P]キーで確認できます。
AI Controller
[AI Controller]を新規作成します。普通の[Controller]とは別ですので注意してください。
作成後NPCCharacterを開いて、AI Controllerを紐付けしましょう。[ポーン]グループの[AI Controller Class]で[NPCController]を選択。
ブラックボード、ビヘイビアツリー
さて今回の肝となるブラックボード、ビヘイビアツリーを新規作成します。
基本はこれら2つに対して行動パターン等をセットしていきます
もう1つ[BTTask_BlueprintBase]というブループリントクラスを用意。名前をWanderとしました。「さまよう」「うろつく」とかの意味です。これに移動先を探すロジックを作ります。
●ブラックボード
ブラックボードを開き[新規キー]を押します。[Vector]型で名前を[Target]にしました。
●Wander
Task処理を定義します。WanderはNPCの行動パターンの『部品』です。つまり『次の移動先をどこにするか探す』という部品という位置づけです。
変数を追加します。名前は「Destination」としました。型は「Blackboard Key Selector」で。
さらに変数をPublicにします。(右側の目を開眼に。)
ブループリントを作りましょう。やっていることは
「アクターの現在位置から半径500cmの範囲でNPCが移動可能な地点をランダムに探す」
「決定した行き先の座標をDestinationキーにセットする」
という処理です。
ビヘイビアツリー
この画面でNPCの行動パターンを組み立てます。
ビヘイビアツリーを開き、今回は以下の3行動を繰り返すだけのものとしましょう。
(1)行き先を探す → (2)実際に移動する → (3)その場に留まる
画面はちょっと特殊で、ブループリントのノードの縦バージョンみたいな作りです。ノードの下にある濃いグレーからドラッグをして接続をします。
まずは3つの行動を順に処理したいので[Sequence]を接続。
次に[Wander]、[Move To]、[Wait]の3つを接続。Sequence時は左のノードから処理をしますので並び順を意識してください。
●AI Controller再び
最後にNPC2Controllerイベントグラフを開いて[BeginPlay]ノードに[Run Behavior Tree]ノードを接続して、[BTAsset]に自分が作成したビヘイビアツリー「NPC2BehaviorTree」を選択します。
完成
多くのサイトで手順が紹介されていますが、どの記事も激長で大変なんだろうなあ(後回しにするか・・・)って放置していたんですが、動画でこのようにゆっくりと解説しても10分でできてしまう簡単さです。
課題
ここで不自然な挙動が幾つか見つかりましたね
・行き先に到着して静止中も歩行モーションのまま。
・歩行モーションと移動スピードが不釣り合いでヘン。
ということで次回は歩行スピードの修正と、歩行時は歩くモーションになって、静止中はそれなりのモーションにする設定、他色々遊んでみる―をしたいと思います。
次
参考サイト
・Unreal Engine 4 Intro to Character AI – 1 by Basement Games – YouTube
・Unreal Engine 4 Intro to Character AI – 2 – Animation! by Basement Games – YouTube
・ビヘイビアツリーを分岐させる。徘徊から追跡 – socialakiba wiki
1 thought on “【UE4】10分で動く。建物にNPC(人物)をランダムに徘徊させよう”