目次
はじめに
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のフォローなどしていただけるとありがたいです。
それではよきゲーム開発を。