ゲーム開発備忘録

ゲームプログラマー UE4・5向けの記事を書いておりますので見ていただけるとありがたいです。

【ゼロからアンリアルエンジン5】〔AI編〕⑳NPCが侵入できないセーフエリアを作ろう

目次

 

はじめに

 

注意

UE5.0.3の現在の情報です。

今後のアップデートによりUIや機能が変更される可能性があることをあらかじめご理解ください。

前回

namiton.hatenablog.jp

 

前回は障害物の回避を行いました。

ゲームではプレイヤーキャラは入れるけれどもNPCが入れないような場所がよくあります。

今回はナビメッシュに進入禁止エリアを設定してNPCが入れないようにする方法を解説します。

NavModifierVolumeという専用機能もありますがAddMovementInputと相性が悪いので独自に作成します。

 

▼この記事でできること

 

解説

 

①進入禁止用のコリジョンプロファイルの作成

プロジェクト設定のエンジン→コリジョンを開きます。

 

新規トレースチャンネルからNotEnterAIを作成します。

NPCキャラのみ設定されているPawnと視界のみをブロックするプロファイルです。

 

②進入禁止用のブループリントの作成

 

StaticMeshActorを親としたブループリントBP_NotEnterAIを作ります。


1M_Cubeを割り当てます。

 

コリジョンプリセットには作成したNotEnterAI

 

Cast Shadowのチェックを外します。

ゲーム中に表示しない場合はHiddeninGameにチェックを入れます。

 

適当なマテリアルを作成して

 

適応します。

 

BTT_Strafingの編集

BTT_Strafingを開きます。

トレースに検出するオブジェクトタイプにNotEnterAIを追加します。

 

④到達できるかのデコレーターの作成

プレイヤーを追えない位置にきたらMoveToを禁止するようにします。

新規デコレーターBTD_CheckCanMoveToを作成します。

 

ChaseActorKeyとのPathを検索して移動できるか判定します。

 

MoveToにデコレーターを追加します。

 

⑤配置と確認

BP_NotEnterAIを配置します。この時ナビメッシュに影響を与えていることを確認してください。


実行して確認してみましょう。(分かりやすいようにメッシュを表示しています。)

NPCのみ入れないことを確認しましょう。

 

最後に

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。