2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Unreal Engine (UE)Advent Calendar 2023

Day 20

[UE5]特定の回数乗ったら消える床を作る

Posted at

概要

この記事では、Unreal Engine 5 で、下の動画のような、1回乗るごとにマテリアルが変わり、特定の回数乗ったら消える床を作成します。
ゲームである、残りの乗れる回数とかが表示されていて、乗れる回数が0になったら消える床のようなものです。

この記事の主な対象者

  • Blueprint(BP)の作り方の基礎を習得されている、初心者の方

特定の回数乗ったら床が消える床を作る

最初に、下図のようなコンポーネント構成のBPを作成します。

limitedusefloor_components.jpg

コンポーネント名 コンポーネントの種類 備考
DefaultSceneRoot Scene このコンポーネントを一番上の親にします。
Box Box Collision プレイヤーが床に乗って、床から降りたことを検知することに使用します。
Floor Static Mesh 床のメッシュです。上図では「Cube」メッシュをセットし、拡大率を調整して、床のようにしています。

上図のコンポーネントを作り終えたら「Box」コンポーネントのサイズと、位置を調整します。プレイヤーが床の上に乗ったときのみ「Box」コンポーネントとプレイヤーが重なるように、下図のように「Box」コンポーネントを配置します。

boxcollision.jpg

次に、プレイヤーが床から降りたらマテリアルが変わり、特定の回数乗ったら消える床が消える処理を実装していきます。

最初に、処理を実装するにあたって必要とする変数を作成していきます。

上で作成した床のBPのイベントグラフを開き、「float」型の変数「RidingNum」を作成します。プレイヤーが床に乗った回数を記憶しておくことに使用します。

ridingnum.jpg

次に「Material」型の配列の変数「RidingNumToMaterialArray」を作成します。床のマテリアルを、乗った回数に合わせたマテリアルに変更することに使用します。

ridingnumtomaterialarray.jpg

「RidingNumToMaterialArray」のデフォルト値に、床にセットしていきたいマテリアルを設定します。
下図のように設定すれば、プレイヤーが床に1回も乗っていないときは黄緑色のマテリアル、床に1回乗って降りたら黄色のマテリアル、床に2回乗って降りたら赤色のマテリアルになるようになります。
この配列にセットしたマテリアルの数が、床に乗ることができる回数となるので、注意します。

ridingnumtomaterialarray_defaultvalue.jpg

処理を実装するために必要とする変数の作成が終わったら、処理を実装するために必要となるノードを、イベントグラフ追加します

上で作成した床のBPのコンポーネント一覧から「Box」コンポーネントを選択し、詳細パネルを開きます。

詳細パネルの「イベント」>「On Component End Overlap」の横にある+ボタン(下図の赤丸)をクリックします。

oncomponentendoverlap_add.jpg

イベントグラフに、下図のノードが追加されていることを確認します。下図のノードは「Box」コンポーネントにOverlapしていたアクタが、「Box」コンポーネントにOverlapしていない状態になった際に呼び出されます。

oncomponentendoverlap_node.jpg

次に、処理の実装で使用する関数を作成します。インプットで受け取ったインデックス番号に対応した「RidingNumToMaterialArray」のマテリアルを取得するための関数です。(今回の記事では、関数の名前を「GetFloorMaterial」にします。)

getfloormaterial.jpg

「GetFloorMaterial」関数のインプットとアウトプットは、下図のようにします。

getfloormaterial_inputoutput.jpg

上図の関数を作成し終わったら、今までに準備した変数やノード、関数を利用して、プレイヤーが床から降りたらマテリアルが変わり、特定の回数乗ったら消える床が消える処理を実装していきます。

下図のノードを組みます。
床がスポーンされた際に、プレイヤーが床に乗った回数を0に設定し直しておくようにするとともに、プレイヤーが1回も床に乗っていないときの床のマテリアルを、床に設定します。

beginplay_graph.jpg

次に、下図のノードを組みます。
床からプレイヤーが下りたときに、プレイヤーが床に乗った回数を1回増やすとともに、乗った回数に対応したマテリアルに床のマテリアルを更新します。プレイヤーが床にたくさん乗り、床に設定すべきマテリアルがなくなったら、床を消すようにします。

oncomponentendoverlap_graph.jpg

これで完成です。
下の動画のように、プレイヤーが床に乗るごとにマテリアルが変わり、プレイヤーが特定の回数床に乗ったら、床が消えるか確認します。




以上で今回の記事の内容は終了です。
最後まで読んでいただき、ありがとうございました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?