ゲーム開発を試してみようと思い立ち、Unreal Engine 5をインストールして開発する過程で調べてみた部分を備忘録的に投稿します。アクションゲームに実装されている「インベントリ」を作成手順の続きです。今回はブループリントでアイテムの取得可否を判定する部分です。
先回までの作業は、別記事をご覧ください。
簡単なインベントリの仕様
実際のゲームで実装されているインベントリは、複雑な機能が盛り込まれているので今回は簡単な実装になるようにしています。
先回までの作業でできている部分は、こんな感じです。
今回からは実際にアイテムを取得したら「スロット」に画像を追加する操作をしていきます。
アイテムを取得するイベントを作成
今回はインベントリに直接関係するレベル上に配置されたアイテム(アクター)をキー操作で取得するイベントを追加していきます。
かなり長い手順になってしまいましたが、[BP_ThirdPersonCharacter]のブループリントに作成します。
1.[BP_ThirdPersonCharacter]を開いて[イベントグラフ]画面の空いている場所でマウスの右クリックします。
2. 表示された[このブループリントで使えるノード]画面で “Keyboard Events E” に検索して追加します。
3.[マイブループリント]画面の[Is Collision]変数をドラッグします。
4. 表示されたポップアップメニューで[Get Is Collision]を選択します。
5. [E]ノードの[Pressed]ピンを伸ばして表示された[実行可能なアクション]画面で “Branch” を検索して追加します。
6. 追加された[Branch]ノードの[Condition]ピンに[Is Collision]変数を接続します。
7. [Brunch]ノードの[True]ピンを伸ばして表示された[このブループリントで使えるノード]画面で “Sphere Trace By Channel” を検索して追加します。
8. [Sphere Trace By Channel]ノードの[Start]ピンを伸ばして表示された[Vector を提供する動作]画面で “Get Actor Location” を検索して追加します。
9. [Get Actor Location]ノードが追加されます。
10. [Get Actor Location]ノード付近の空いている場所で右クリックして表示された[すべてのノード]画面で “Get Actor Forward Vector” を検索して追加します。
11. 追加された[Get Actor Forward Vector]ノードの[Return Value]ピンを伸ばして表示された[すべてのノード]画面で “Multiply” を検索して追加します。
12. [ × ]ノードが追加されます。
13. [ × ]ノードでマウスの右クリックをして表示されたポップアップメニューで[浮動小数点(単精度)へ]を選択します。
14. 変更されたノードの緑色ピン付近のボックスに “100.0” を設定します。
15. [Get Actor Location]の[Return Value]ピンを伸ばして表示された[すべてのノード]画面で “Add” を検索して追加します。
16. [ + ]ノードが追加されます。
17. [ ×]ノードと[+]ノードを下の画像のように接続します。
18. [ + ]ノードと[Sphere Trace By Channel]の[End]ピンを接続します。
19.[Sphere Trace By Channel]の[Radius]に “100.0” を設定、[Draw Debug Type]には範囲の確認用に[For Duration]を設定しておきます。
20. 適当なアイテムをレベルに配置してゲームを開始します。
21. キャラクターを配置したアイテムに近づけると周りに[Draw Debug Type]で設定した範囲がワイヤー表示されます。(緑色で表示されている部分が[Sphere Trace By Channel]で設定した範囲です)
アイテムからインベントリ用画像を取得
キャラクターの付近で判定されたアイテムからインベントリで表示するための画像を取得する処理を追加していきます。
1. [Sphere Trace By Channel]ノードの実行ピンを伸ばして表示された[すべてのノード]画面で “Branch” を検索して追加します。
2. [Sphere Trace By Channel]ノードの[Return Value]ピンと[Branch]ノードの[Condition]ピンを接続します。
3.[Sphere Trace By Channel]ノードの[Out Hit]ピンを伸ばして表示された[すべてのノード]画面で “Break Hit Result” を検索して追加します。
4. [Break Hit Result]ノードが追加されます。
5.[Branch]ノードの[True]ピンを伸ばして表示された[すべてのノード]画面で “Get SlotImage (Message)” を検索して追加します。
6. [Get Slot Image]ノードが追加されます。
7.[Get Slot Image]ノードの[Target]ピンと[Break Hit Result]ノードの[Hit Actor]ピンを接続します。
ここまでの作業で、キャラクターの近くのアイテムからTexture 2D(平面画像)を取得するまでのイベントが出来上がりました。
次回は、アイテムから取得した画像をインベントリに表示する部分をブループリントを追加していきます。
まとめ
今回は長い手順になりましたが、Unreal Engineで配置したアイテムにキャラクターの持ち物として管理する「インベントリ」画面を作る手順について書きました。
アクションゲームをプレイしていると、必ずと言って良いほど実装されている[インベントリ]機能があります。
実際にゲームで使えるようになるには、複雑な機能が必要ですが最初の勉強として簡単な持ち物管理の画面を作ってみます。
Unreal Engineのゲーム開発でアイテムを管理する[インベントリ]画面を表示させたい人の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。