【UnrealEngine】プログレスバーと変数を紐づけてHPを作成しよう!
前回までの記事の内容で、HPをClampで制御したりウィジェットを画面に表示させたりできるようになったので、プログレスバーと値を紐づけて実際のゲームであるようなHPバーを作成していこうと思います。
前回までの記事を読んだ方はおさらいだと思って序盤は目を通すくらいで問題ないと思います。
さっそくですが、プレイヤーキャラクターのC++を開いてHPを設定していきましょう。

現在の体力を設定する変数と最大値を入れる変数の2つがあれば大丈夫ですかね。


続いては関数を2つ作成します。Clampの上下設定用とDamage用の関数ですね。

ソースファイルに移動して関数の処理を組んでいきましょう。
まずはCampです。

続いてはダメージ処理です。
確認しやすいようデバッグ表示されるようにしておきましょう。

今回時間経過でダメージを受けるようにします。
ヘッダーファイルにTickの宣言をしてからソースファイルでダメージ処理を実装!


ここまででゲームをプレイしてみてHpの値がマイナスにならなければ問題なしです。

そしたら次はHPBarを画面に表示できるようにしていきましょう!
C++のユーザーウィジェットをまず作成する。
アクタ作成時と同様にC++フォルダ内で新規C++の作成を押した後に「全てのクラス」の方に切り替えて窓で検索すると「UserWidget」があるから選択して作成する。

さきにC++を右クリックしてウィジェットブループリントを作成しておくよ!

ウィジェットBPが立ち上がるからそのままプログレスバーも追加しておこう。

いったんプレイヤーコントローラーのコード記述に移動しましょう。またコンテンツドロワーを立ちあげて、C++のプレイヤーコントローラーをクリックして開きます。

クラスを宣言して、変数を2つ作成します。


プレイヤーコントローラのソースファイルに移動して、コンストラクタの中にウィジェットを開くコードを記述します。

コンパイルしてウィジェットをプレイヤーコントローラーに設定することができたらひとまずここでゲームをプレイしてみましょう!
ウィジェットが問題なく画面に表示されていたら大丈夫です。


ナイスプレイ!
そうしたらウィジェットのC++を作成していこう。
ヘッダーファイルに関数と変数をそれぞれ作成する。

作成した関数の処理を書いていく。あとはプレイヤー側からここの関数に値を流せるようにするだけ!

プレイヤーコントローラーのソースファイルにインクルードでウィジェットを読み込ませておく。

続いてプレイヤーキャラクターにもインクルードを記述する。コントローラーの方ではウィジェットのみインクルードしたが、キャラクターではコントローラーもインクルードする。
ウィジェットの関数に値を渡すにはコントローラーを経由する必要があるため。

そうしたら序盤で作成したダメージ関数の中に追加で値を渡せるようにコードを書いていく。

ここまでできたらUnrealEngineに戻ってコンパイルする。
できたらウィジェットブループリントを開いてプログレスバーのバインドを作成して、変数をゲットで接続したら完成です。


ゲームをプレイしてみましょう!
時間経過とともに値も減少し、HPバーも同様に減少してます。

今回はHPを減らす処理を具体で記載しましたが、減算の関数の部分をコピーして関数名と変数から引く処理を増加に変えたらHPを回復する処理も簡単に実装できますので、ぜひやってみてください。

ということで本日もお疲れさまでした。
またお会いしましょう!!!
YouTubeチャンネルもやってます
