この記事では、プレイヤーが触れると消え、拾えるアイテムの作り方を紹介する。記事の後半では、拾ったときにアイテム数をカウントする方法についても紹介する。
環境
- Unreal Engine 5
- プロジェクトプリセットの「サードパーソン」を使用
操作手順
- コンテンツドロワーを開き、適当な場所で右クリックしブループリントを選択
- Actorを選択
- 名前は適当につける。今回は「PickableItem」とした
- 作成したブループリントを開き、「追加」→「StaticMesh」を選択
- 「詳細」パネルの「Static Mesh」に適当なメッシュを割り当てる。ここでは例として「MaterialSphere」を選択した。
- 同じく「詳細」パネル内の「コリジョンプリセット」をOverlapOnlyPawnに設定する。
- 「イベントグラフ」タブに移動し、ActorBeginOverlapからDestroy Actorノードを呼び出す。
- ブループリントのコンパイルボタンを押して反映させる
- メインのビューポートに戻り、作成したブループリントをドラッグ&ドロップして配置する
以上でアイテムの設定と配置は完了。
この状態でプレイすると、プレイヤーが触れた時にアイテムが消えるようになる。
アイテムの効果の実装
アイテムを拾ったときに何らかの効果や取得数を更新したい。
アイテムのブループリントのDestroy Actorの前に処理を入れるとそのような効果を付けることができる。
今回は例として、GameModeオブジェクトに変数を追加し、アイテムを拾うと増えるようにしてみる。
変数の設定
- コンテンツ>ThirdPerson>Blueprintsの中のBP_ThirdPersonGameModeを開く
- ブループリントエディタで開き、左側のパネル内の変数の「+」ボタンを押し、Itemsという名前の変数を作る。型はIntegerにする。
- 左上のコンパイルを押して閉じる
変数の更新と表示
アイテムがプレイヤーに触れた時、先程設定した変数Itemsが1増えるようにする必要がある。
- PickableItemのイベントグラフを開く
- ActorBeginOverlapとDestroy Actorの間に以下のようなノードを追加する
始めにGet Game ModeとCast To BP_ThirdPersonGameModeで先程設定したゲームモードを呼び出している。そこから変数Itemsの値を呼び出し、1を足した後セットでItemsに戻している。これで拾うとアイテムのカウントが増えるようになった。
そのあと、値をPrint Stringで画面に表示するようにした。
ビューポートに戻り、いくつかアイテムを配置してプレイしてみると以下のように左上に取得した個数が表示される。
まとめ
この記事ではプレイヤーが拾って取得できるアイテムを追加し、取得した時の処理の付け方を解説した。
今回は拾ったときにアイテムの数が更新されるようにしたが、同じように異なる処理(プレイヤーの体力を増やす、重力を大きくする、etc…)を簡単に追加できる。