[Unreal Engine 5]コストを消費する機能を作る

Unreal Engine 5

シンプルなタワーディフェンスゲームを作る part9

こちらのようなシンプルなタワーディフェンスゲームを作っています。本記事では下の動画のように、オブジェクトをクリックしたときに、設定したコストを支払って「砲台タワー」を出現させ、所持金が足りない場合は「砲台タワー」を出現させない処理を作ります。

所持金を表示する

初めに現在所持している金額を表示する機能を作ります。

「WBP_HQ_Status」を開きます。左上のパレットで「Text」を検索して追加します。
「Text」の名称を「money_text」に変更​し「Is Variable」にチェックを付けます。
「money_text」を右上にくるよう位置を調整、​フォントサイズを調整、右詰めにします。

「グラフ」ボタンを押下しイベントグラフを開きます。

「Add Custom Event」​で新しいイベントを作成し、イベント名を「Update_money」にします。
作成した「Update_money」にFloat型インプットを追加​し名称を「moeny」にします。
先ほど作成した「money_text」をドラッグアンドドロップ​し「Set Text(Text)」を追加します。
「Update_money」のインプット「money」と「In Text」を繋ぎます。​「To Text(Float)」は自動で追加されます。

所持金を増減させる

「BP_headquater」に所持金を増減させる機能を作ります。

所持金を記憶しておくためFloat型変数「money」を追加​しデフォルト値を200にします。
「Event BeginPlay」の続きに初期化処理を追加します。
「hq_status」から線を引き出し「Update_money」を追加​します。「Update_money」の「money」には先ほど作成した変数「money」を接続します。

所持金を更新するイベントを作ります。

「BP_headquater」のイベントグラフ上で「Add Custom Event」​を追加し、作成したイベントの名称を「add_money」にします。「add_money」のインプットにFloat型「money」を追加します。
変数「money」にインプット「money」を加算します。
「hq_status」の「Update_money」に変数「money」を接続します。

「砲台タワー」を建てるときにコストを消費する

「砲台タワー」を建てるときにコストを消費する機能を作ります。

まず「砲台タワー」を建てるために必要なコスト情報を設定します。
「BP_tower」を開きます。
変数「cost」を追加​し、デフォルト値を100に設定します。

「BP_tower_socket」を開きます。

「Event BeginPlay」の続きに「BP_headquater」を取得する処理を追加します。
方法はpart2と同じです。

「BP_tower_socket」のpart8で作った「spawn_tower」イベントの処理を改造します。

「SpawnActor BP Tower」の続きに「cast To BP_tower」​を繋ぎます。「BP_tower」の変数「cost」と​「headquater」の変数「money」を比較し​「cost」の方が高いかを「Branch」で判定します。「cost」の方が高い場合​はタワーを建てなかったことにするためタワーをターゲットに「Destroy Actor」をします。
「cost」の方が低い場合​はタワーを建てることができるので、「have_tower」をtrueにし「headquater」の「Add_money」の「money」に「cost」の-1倍を繋ぎます(「cost」分だけ所持金を支払います)。

※コンパイルすると「cast To BP_tower」に「NOTE」が表示されます。これは「SpawnActor BP Tower」で「BP_tower」を出力していることは自明なのでキャストは必要無いという情報です。
今回の処理では無くても良いですが、将来的に「SpawnActor」で指定するオブジェクトを変更することが出来る処理を追加する予定なのでその際には必要になります。

ここまで実装して、冒頭の動画のような振る舞いを確認することが出来ます。
動画では「tower_socket」が3つありますが、所持金が200で「砲台タワー」のコストが100なので「砲台タワー」を2つ出現させると、3つめの「砲台タワー」を出現させることが出来なくなります。

コメント

タイトルとURLをコピーしました