広告 キャラクター関連テク

常にプレイヤーを見るNPCを作る

Unreal Engine(UE)で常にプレイヤーを見続けるNPCを作ってみよう!

戦闘するわけではなく、ただプレイヤーを見続けるだけのモブキャラが欲しいと思ったことはありませんか?
もちろん敵にも応用可能な方法で、実装方法をご紹介します。

※NPCはNon Player Characterの略称で、ゲーム上でプレイヤーが操作しないキャラクターのことです。

プレイヤーを追うNPC
完成イメージ

動作環境

当記事の動作環境は以下の通りです。
バージョンや環境によっては、正常に動作しない可能性があります。

ポイント

OS:Windows11 (Ver 22H2)

GPU:NVIDIA GeForce RTX 3060 Ti (Ver 3.27.0.112)

UE:UnrealEngine5 (Ver 5.3.1)

また、プロジェクトはサードパーソンプロジェクトの使用を前提とします。

【下準備】NPCの作成

まずはNPCを作成していきます。

NPCのブループリントを作成

一般的なキャラクターブループリントで問題ありません。
「Character」を親としたブループリントクラスを作成します。

キャラクターブループリント作成ダイアログ

「メッシュ」欄には対象としたいNPCのキャラクターのメッシュを設定します。
トランスフォームを忘れずに変更しましょう。

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

NPCをマップに配置

作成したNPCのブループリントをマップに配置しましょう。
ドラッグアンドドロップ(D&D)で配置できます。

レベルにキャラクターブループリントを配置

アニメーションブループリントの作成

アニメーションブループリントを作成します。
コンテンツブラウザにて、何もない部分を右クリックして、「アニメーション」-「アニメーションブループリント」を選択します。

アニメーションブループリントの作成

自作キャラの場合は該当するスケルトンを、特になければ「SK_Mannequin」のスケルトンを選択します。

SKマネキンのスケルトンを選択

アニメーションの作成

作成したアニメーションブループリントを開き、次の手順を実行します。

  1. アセットブラウザから「MM_Idle」をD&D
  2. 「MM_Idle」を「Output Pose」ノードのResultに接続
  3. 設定欄の「Loop Animation」にチェックを入れる
MM_Idleの設定

作成したアニメクラスをコンパイルして、NPCのブループリントに設定します。

アニメクラスの設定

【本題】プレイヤーを見続けるアニメーションの作成

ここからが本題です。
プレイヤーを見続けるアニメーションを作っていきます。

イベントグラフの編集

まずはイベントグラフを編集します。
デフォルトで入っている、「Try Get Pawn Owner」は今回使用しないため、削除しても構いません。

「Event Blueprint Update Animation」ノードからピンを伸ばし、「Cast To BP_ThirdPersonCharacter」を設定します。

cast_thirdperson

「Cast To BP_ThirdPersonCharacter」のobjectからピンを伸ばし、「Get Player Character」を接続します。

プレイヤーを見続けるNPCのイベントグラフ
ここまでのイベントグラフ

「Cast To BP_ThirdPersonCharacter」のAs BP Third Person Characterからピンを伸ばし、「Get Mesh」を接続します。
(Meshで検索すると見つけやすいでしょう)

さらに「Get Mesh」のMeshからピンを伸ばし、「Get Socket Location」を接続します。

「Get Socket Location」のReturn Valueを右クリックして変数へ昇格させます。
するとセットノードが出現します。

「セットノード」と「Cast To BP_ThirdPersonCharacter」ノードを接続します。

プレイヤーを見続けるNPCのイベントグラフ
ここまでのイベントグラフ

アニメグラフの編集

次に、アニメグラフを編集します。

MM_IdleとOutput Poseの間に「Look At」ノードを追加します。
ノードを接続し直すと、Look Atの両側に自動的にノードが追加されます。

アニメグラフ

「Look At」ノードの詳細にて、以下の通り設定します。

  1. Bone to Modifyに「head」を設定
  2. Look at Locationに「ピン」を設定(ピンとして公開を選択)

「Look At」ノードのLook At Location欄に、すでに追加されている変数を設定します。

アニメグラフ
ここまでのアニメグラフ

基礎部分は完成

ここまでで、基礎部分は完成です。
NPCの前にプレイヤーがいる場合は、問題なくプレイヤーを見続けてくれます。

しかし、プレイヤーがNPCの後ろに回ってもNPCはプレイヤーを見続けます。
すると、下図のように頭がおかしな回転をすることになります。

NPCがプレイヤーを見続ける
NPCの頭の向きがおかしい

調整

NPCの後ろにプレイヤーが行った場合の挙動を調整します。

アニメグラフのLook At ノードの詳細から、「Look At Clamp」を40~70程度に、「Interpolation Time」を1~5程度にそれぞれ設定します。
この部分は各自で好みに応じて値を調整してください。

LookAtClamp

まとめ

プレイヤーを追うには「Get Player Character」から始まる処理が重要です。
また、Look Atノードは他のボーンを追従する機能です。
これらを使って実装します。

プレイヤーを追うNPC
完成イメージ

-キャラクター関連テク