Unreal Engine:HUDを使ってHPバーを作成する

キャラクターが爆弾に触れて爆弾が爆発した場合、ゲームであれば本来はキャラクターの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の数値を変えます。

このくらいが一番しっくりきます。

スポンサーリンク
スポンサーリンク

コメント

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