キャラクターが爆弾に触れて爆弾が爆発した場合、ゲームであれば本来はキャラクターのHPが減少、もしくは、HPの残量が少なければキャラクターは死亡します。キャラクターのHPの状態を知るためにはHPバーが必要になります。HPバーがあることで、例えば、爆弾が爆発した時にキャラクターにダメージを与えていることを視覚的に確認できます。
HUDを使ってHPバーを作成する
先ず、HUDが使えるようにMyProject.Build.csを書き換えます。
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "UMG" }); PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });
コンテンツフォルダ内に新たにHUDフォルダを作成して、そのフォルダ内で右クリック、ユーザーインターフェース→ウィジェットブループリントを選択します。名前はCharacterHealthBarにします
ファイルを開いたらCanvas Panelを削除します。
検索窓にprogressと入力してprogressbarをCharacterHealthBarに追加します。
追加したprogressbarの名前をHealthBarに変更します
検索窓にfillcolorと入力して青色のバーの部分を左クリックします。
RとAを1に、GとBを0に設定します。
これでヘルスバーの作成は終了です。今度は、ヘルスバーを画面に表示させます。
HPバーを画面に表示させる
プレイヤーコントローラを親クラスにした新しいC++クラスを作成します。名前はここではMyPlayerControllerのままにしています。
MyPlayerController.hのGENERATED_BODY()の下に以下のコードを追加します。
public: AMyPlayerController(); protected: virtual void BeginPlay() override; private: UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Widgets, meta = (AllowPrivateAccess = "true")) TSubclassOf HUDOverlayClass; UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Widgets, meta = (AllowPrivateAccess = "true")) UUserWidget* HUDOverlay;
MyPlayerController.cppに以下のコードを追加します。
#include "MyPlayerController.h" #include "Blueprint/UserWidget.h" AMyPlayerController::AMyPlayerController() { } void AMyPlayerController::BeginPlay() { Super::BeginPlay(); if (HUDOverlayClass) { HUDOverlay = CreateWidget<UUserWidget>(this, HUDOverlayClass); if (HUDOverlay) { HUDOverlay->AddToViewport(); HUDOverlay->SetVisibility(ESlateVisibility::Visible); } } }
UE4エディタのHUDフォルダ内に新規にウィジェットブループリントを作成します。ここではファイル名はCharacterHudOverlayにしています。
検索窓にhealthbarと入力します。
Character Health BarをCanvas Panelの中に引っ張てきます。
アンカーを開いて左上を選択します。
ヘルスバーの大きさを調整します。
コンテンツフォルダ内にPlayerControllerフォルダを新規に作成してMyPlayerControllerをベースに新規にブループリントを作成します。
フォルダにPlayerControllerを選択し好きな名前を付けます。
HUDOverlayClassのNoneを押します。
HUDOverlayClassをNoneからCharacterHudOverlayに変更してコンパイルと保存を押します。
GameModeフォルダをクリックして中のファイルを開きます。
Player Controller Classのボタンを押します。
プルダウンメニューからMyControllerPlayer_BPを選択してコンパイルと保存を押します。
ワールドセッティングタブを押します。
ゲームモードオーバライドがGameModeフォルダ内のファイル名と一致していることを確認します。
CharacterHealthBarを開き検索窓にpercentと入力してPercentを動かして赤色が表示されるようにします。
CharacterHudOverlayを開いてヘルスバーウィジェットが左上になっていることを確認します。
表示されたHPバーを確認します。
HPバーが大き過ぎるのとパディングが必要なのが分かります。サイズを小さくしてパディングします。パディングはAlignmentのxとyの数値を変えます。
このくらいが一番しっくりきます。
コメント