diff --git a/Content/Blueprints/Characters/Player/BP_ExoPlayerCharacter.uasset b/Content/Blueprints/Characters/Player/BP_ExoPlayerCharacter.uasset index abfd17e..2088f19 100644 Binary files a/Content/Blueprints/Characters/Player/BP_ExoPlayerCharacter.uasset and b/Content/Blueprints/Characters/Player/BP_ExoPlayerCharacter.uasset differ diff --git a/Content/Material/pngtree-target-crosshair-icon-simple-style-png-image_1839195.uasset b/Content/Material/pngtree-target-crosshair-icon-simple-style-png-image_1839195.uasset new file mode 100644 index 0000000..a0581ff Binary files /dev/null and b/Content/Material/pngtree-target-crosshair-icon-simple-style-png-image_1839195.uasset differ diff --git a/Content/Widget/WBP_PlayerUI.uasset b/Content/Widget/WBP_PlayerUI.uasset new file mode 100644 index 0000000..7a968b5 Binary files /dev/null and b/Content/Widget/WBP_PlayerUI.uasset differ diff --git a/Source/Exo/Private/Characters/ExoPlayerCharacter.cpp b/Source/Exo/Private/Characters/ExoPlayerCharacter.cpp index 783f599..e60497c 100644 --- a/Source/Exo/Private/Characters/ExoPlayerCharacter.cpp +++ b/Source/Exo/Private/Characters/ExoPlayerCharacter.cpp @@ -9,7 +9,8 @@ #include "Items/AmmoBoxBase.h" #include "Items/HealthBoxBase.h" #include "Player/InteractionComponent.h" -#include "Widget/UWBP_HpBar.h" +#include "Widget/WBP_PlayerUI.h" + AExoPlayerCharacter::AExoPlayerCharacter() { @@ -38,18 +39,17 @@ void AExoPlayerCharacter::BeginPlay() - if (PlayerHudClass) + PlayerHud = CreateWidget(GetWorld(),PlayerHudClass); + if (PlayerHud) { - PlayerHud = CreateWidget(GetWorld(),PlayerHudClass); + PlayerHud->AddToViewport(); + PlayerHud->AddToPlayerScreen(); + if (PlayerHud) { - PlayerHud->AddToViewport(); - PlayerHud->AddToPlayerScreen(); - UWBP_HpBar *HpBar=Cast(PlayerHud); - if (HpBar) - HpBar->SetHp(CurrentHealth,MaxHealth); - - } + PlayerHud->SetHp(CurrentHealth,MaxHealth); + PlayerHud->SetAmmo(10); + } } } @@ -91,4 +91,7 @@ void AExoPlayerCharacter::AddHealthPoints(float addValue) if (CurrentHealth > MaxHealth) CurrentHealth = MaxHealth; + + if (PlayerHud) + PlayerHud->SetHp(CurrentHealth,MaxHealth); } \ No newline at end of file diff --git a/Source/Exo/Private/Widget/WBP_PlayerUI.cpp b/Source/Exo/Private/Widget/WBP_PlayerUI.cpp new file mode 100644 index 0000000..fbb26b5 --- /dev/null +++ b/Source/Exo/Private/Widget/WBP_PlayerUI.cpp @@ -0,0 +1,20 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "Widget/WBP_PlayerUI.h" + +#include "Components/TextBlock.h" +#include "Widget/UWBP_HpBar.h" + +void UWBP_PlayerUI::SetHp(float hp, float hpMax) +{ + if (HPBar) + HPBar->SetHp(hp, hpMax); +} + +void UWBP_PlayerUI::SetAmmo(int ammo) +{ + if (AmmoText) + AmmoText->SetText(FText::AsNumber(ammo)); +} + diff --git a/Source/Exo/Private/Widget/WBP_PlayerUI.h b/Source/Exo/Private/Widget/WBP_PlayerUI.h new file mode 100644 index 0000000..dce0020 --- /dev/null +++ b/Source/Exo/Private/Widget/WBP_PlayerUI.h @@ -0,0 +1,30 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Blueprint/UserWidget.h" +#include "WBP_PlayerUI.generated.h" + +/** + * + */ +UCLASS() +class UWBP_PlayerUI : public UUserWidget +{ + GENERATED_BODY() +public: + void SetHp(float hp,float hpMax); + + void SetAmmo(int ammo); + + UPROPERTY(EditAnywhere, meta = (BindWidget)) + class UWBP_HpBar* HPBar; + + UPROPERTY(EditAnywhere, meta = (BindWidget)) + class UImage* AmmoImage; + + UPROPERTY(EditAnywhere, meta = (BindWidget)) + class UTextBlock* AmmoText; + +}; diff --git a/Source/Exo/Public/Characters/ExoPlayerCharacter.h b/Source/Exo/Public/Characters/ExoPlayerCharacter.h index 5e2d756..f83b1bc 100644 --- a/Source/Exo/Public/Characters/ExoPlayerCharacter.h +++ b/Source/Exo/Public/Characters/ExoPlayerCharacter.h @@ -9,6 +9,7 @@ class UInteractionComponent; class UShootingComponent; +class UWBP_PlayerUI; UCLASS() class EXO_API AExoPlayerCharacter : public AExoCharacterBase @@ -56,7 +57,7 @@ public: UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "UI") TSubclassOf PlayerHudClass; - + UFUNCTION() void OnActorBeginOverlap(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult @@ -70,5 +71,5 @@ protected: float MaxHealth = 100.0f; - UUserWidget* PlayerHud; + UWBP_PlayerUI* PlayerHud; };