キャラクター

常にプレイヤーを見る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マネキンのスケルトンを選択
SKマネキンのスケルトンを選択

アニメーションの作成

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

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

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

アニメクラスの設定
アニメクラスの設定

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

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

イベントグラフの編集

まずはイベントグラフを編集します。

「Try Get Pawn Owner」の削除

デフォルトで入っている「Try Get Pawn Owner」は今回使用しないため、削除しても構いません。

「Cast To BP_ThirdPersonCharacter」を設定

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

cast_thirdperson
「Get Player Character」を接続

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

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

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

「Get Socket Location」を接続

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

「セットノード」と「Cast To BP_ThirdPersonCharacter」ノードを接続

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

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

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

アニメグラフの編集

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

「Look At」ノードを追加

MM_IdleとOutput Poseの間に「Look At」ノードを追加します。
ノードを接続し直すと、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
完成イメージ
  • この記事を書いた人
  • 最新記事
クルエイチ

クルエイチ

NextClueLabの代表・管理者。 (Clue + 英知・叡智・叡知)でクルエイチ。 平日は会社員。 土日は副業でWeb・スマホアプリの開発やブロガーをこなす。 祝日は休み、UE5で3DCG動画制作などをして過ごす。

人気記事

Unreal Engine(UE)で、フリーフォントや購入したフォントを使ってみよう!とてもシンプルなテクニックですが、他のUE製作者と簡単に差をつけることができます! 1

フリーフォントや購入したフォントを使ってみよう!とてもシンプルなテクニックですが、他のUE製作者と簡単に差をつけることができます!

Windows用にパッケージ化するとエラーが出る場合があります。当記事の対処方法で解決する場合があるので参考にしてみてください。 2

Windows用にパッケージ化するとエラーが出る場合があります。当記事の対処方法で解決する場合があるので参考にしてみてください。

Unreal Engine(UE)で鏡のマテリアルを作ってみよう!壁や床、箱などにも設定可能で自由度の高い鏡マテリアルの作り方を、初心者向けに解説します! 3

鏡のマテリアルを作ってみよう!壁や床、箱などにも設定可能で自由度の高い鏡マテリアルの作り方を、初心者向けに解説します!

-キャラクター
-