目次
はじめに
UE5入門者向けにAp●xLegends風のアイテム周りの実装をシリーズ化します。
以前書いたこちらの記事のUE5解説&拡張版です。
▼この記事でできること

解説
①プロジェクトの作成
UE5.0.3のFPSサンプルで作成します。

②アイテムカテゴリーの列挙型の作成と編集
コンテンツ右クリックからブループリント→列挙型を選択します。
名前をEN_ItemCategoryにしました。

開いたら拡張子の追加からアイテムのカテゴリーを追加します。

もう一つEN_ItemRarityを作成します。
こちらは4段階のレアリティを定義します。

③アイテム情報の構造体の作成と編集
コンテンツ右クリックからブループリント→構造体を選択します。
名前をST_ItemInfoとしました。

構造体に変数を追加します。デフォルト値も設定しておきましょう。

④インターフェースの作成と編集
コンテンツ右クリックからブループリント→インターフェースを選択します。
名前をBPI_PickItemとしました。

インターフェースを開き、関数GetItemInfoを作成します。
アウトプットに作成した列挙型ST_ItemInfoを返すようにします。
もう一つActionPickも追加しておきます。この関数にはインプットもアウトプットも設定しません。

⑤アイテムベースブループリントの作成
コンテンツ右クリックからブループリント→ブループリントクラスからActorを親としたブループリント、BP_ItemBaseを作ります。

コンポーネントの追加からSphereCollisionを追加します。

名前をItemHitCollisionと変更してDefaultSceneRootの子になるように配置されていることを確認します。

コンポーネントの追加からStaticMeshを追加します。

ルートにドラッグして親にします。


名前をItemMeshとしました。

コリジョンつきのCubeをセットしてSimulatePhysicsにチェックを入れましょう。

コリジョンをCustomにしてPawnをOverrideにします。

⑥インターフェースの実装
クラス設定を押してインターフェースに作成したものを実装します。

右クリックからイベントの実装を行います。

⑦アイテムブループリントの作成
BP_ItemBaseを右クリックして子を作ります。
今回はBP_ItemAmmoとしました。

子ブループリントを開きます。
GetItemInfo関数があるので開き変数に昇格します。

ST Item Ammo Infoとしました。

コンパイル後デフォルト値に表示したい内容を記述します。

Meshを好みのものに変更します。
スケールを調整しましょう。

また、メッシュにコリジョンがあることを確認しましょう。

ItemHitCollisionとStaticMeshの両方が検出対象になるのでItemHitCollisionの位置やスケールをStaticMeshを覆うように配置します。

⑧コリジョンプリセットの編集と適応
編集プラジェクト設定からコリジョンを選びます。

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

⑨BP_FirstPersonCharacter編集
BP_FirstPersonCharacterのイベントグラフに画像ように0.1秒おきにイベントを呼び出すノードを作成します。

カメラの見ている場所に向かってライントレースを行います。
この時検出するチャンネルはTraceItemです。

ピンの変更は右クリックから行います。
デバッグ表示すると、このように見ている場所に当たったものを検知できます。

あとはヒットしたアクタがPickインターフェースを実装しているか確認してしていたら呼び出します。

実行してアイテムを見たら表示されることを確認します。

検出距離はここの値で変更できます。変数化しておきましょう。


これでアイテムの情報を取得できました。
次回はウィジェットを使って画面に表示するまでを解説します。
⑩おまけ、デフォルトの銃にも適応してみる。
BP_Rifleを開きます。
クラス設定からインターフェースを実装。

GetItemInfoから表示したい内容を設定する。

実行すると簡単にアイテム情報を取得できます。

最後に
UE4やUE5向けの記事を書いています。
皆様の応援が投稿のモチベーションになりますので
コメントやTwitterのフォローなどしていただけるとありがたいです。
それではよきゲーム開発を。
