[Unreal Engine 5]キャラクタの頭上にHPバーを表示する

Unreal Engine 5

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

こちらのようなシンプルなタワーディフェンスゲームを作っています。本記事では下の動画のように、キャラクタの頭上の現在のHPを示すバーを作ります。

HPバーのウィジェットを作る

HPバーの表示には「Widget」を使います。
「enemy」フォルダを開き、右クリック→「ユーザーインターフェース」→「User widget」を選択​します。名称は「WBP_unit_health」とします。

「WBP_unit_health」を開きます。「Canvas panel」、「Progress Bar」を順に追加します。
「Progress Bar」の名称を「hp_bar」とし「Is Variable」にチェックをつけておきます。
アンカーを中央にし、位置x,yを0,0​、サイズx,yを100,10​、Alignmentを0.5,0.5とし、色は赤色にします。

右上の「グラフ」ボタンで「イベントグラフ」に移ります。「Add custom Event」でイベントを追加​し、名称を「Update_health」にします。左の変数欄から「hp_bar」をドラッグアンドドロップし作成した「get hp_bar」から線を引き出し「Set Percent」を追加​します。「Set Percent」の「In Percent」ピンから線を引き出し「Update_health」にドラッグアンドドロップし「Update_health」のインプットを追加します。

HPバーウィジェットをキャラクタの頭上に置く

作成した「WBP_unit_health」を「敵ユニット」に付けます。

「BP_enemy」を開きます。左上の「コンポーネント」「追加」ボタンから「widget」を検索して追加します。

「widget」の名称を変更し「hp_bar」にとします。
「hp_bar」の詳細パネルで「space」を「Screen」に変更​し、「Widget Class」に作成した「WBP_unit_health」を割り当て​ます。
「space」を「Screen」にしておくことで「hp_bar」が常にカメラ方向に向くようになります。

キャラクタからHPバーを更新する

「敵ユニット」にHPバーを更新する機能を作ります。

「BP_enemy」のイベントグラフを開きます。作成した「hp_bar」をドラッグアンドドロップ​し、「hp_bar」から線を引き出して「Get User Widget Object」を追加、「Get User Widget Object」から線を引き出して「Cast To WBP_unit_health」を追加し、「Event BeginPlay」の末尾に繋げます。
「Cast To WBP_unit_health」の「As WBP_unit_health」から線を引き出して「Update Health」を追加し、「Cast To WBP_unit_health」の次に繋ぎます。「Update Health」の「In Percent」に「health」を「max_health」で割った(divide)値を繋げます。

ダメージを受けてHPが減少した後にも同じ処理を追加します。
「BP_enemy」の「Event AnyDamage」のHPを減算する処理の次に、先ほど「Event BeginPlay」に作成した処理と同じものを追加します。

ここまで作って実行すると、冒頭の動画のような動きになります。

コメント

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