Add support for loading different health and speed values from enemy data asset

This commit is contained in:
baz 2025-09-15 23:08:40 +01:00
parent f49fb3e164
commit 02e2318761
2 changed files with 20 additions and 9 deletions

View File

@ -14,6 +14,7 @@
#include "Components/SphereComponent.h" #include "Components/SphereComponent.h"
#include "Kismet/GameplayStatics.h" #include "Kismet/GameplayStatics.h"
#include "NiagaraFunctionLibrary.h" #include "NiagaraFunctionLibrary.h"
#include "GameFramework/CharacterMovementComponent.h"
AEnemyCharacter::AEnemyCharacter(const FObjectInitializer& ObjectInitializer) AEnemyCharacter::AEnemyCharacter(const FObjectInitializer& ObjectInitializer)
{ {
@ -115,6 +116,8 @@ void AEnemyCharacter::LoadDataFromDataAsset_Implementation(UEnemyDataAsset* Enem
OnDeathSound = EnemyDataAsset->OnDeathSoundBase; OnDeathSound = EnemyDataAsset->OnDeathSoundBase;
OnDamagedNiagaraSystem = EnemyDataAsset->OnDamagedNiagaraSystem; OnDamagedNiagaraSystem = EnemyDataAsset->OnDamagedNiagaraSystem;
OnDeathNiagaraSystem = EnemyDataAsset->OnDeathNiagaraSystem; OnDeathNiagaraSystem = EnemyDataAsset->OnDeathNiagaraSystem;
HealthComponent->SetMaxHealth(EnemyDataAsset->MaxHealth);
GetCharacterMovement()->MaxWalkSpeed = EnemyDataAsset->MovementSpeed;
PickupArray.Add(EnemyDataAsset->CommonPickupDataAsset); PickupArray.Add(EnemyDataAsset->CommonPickupDataAsset);
PickupArray.Add(EnemyDataAsset->UncommonPickupDataAsset); PickupArray.Add(EnemyDataAsset->UncommonPickupDataAsset);
@ -131,6 +134,8 @@ void AEnemyCharacter::ResetData_Implementation()
OnDeathSound = nullptr; OnDeathSound = nullptr;
OnDamagedNiagaraSystem = nullptr; OnDamagedNiagaraSystem = nullptr;
OnDeathNiagaraSystem = nullptr; OnDeathNiagaraSystem = nullptr;
HealthComponent->SetMaxHealth(100.0f);
GetCharacterMovement()->MaxWalkSpeed = 300.0f;
} }
float AEnemyCharacter::GetCapsuleRadius_Implementation() float AEnemyCharacter::GetCapsuleRadius_Implementation()

View File

@ -19,30 +19,36 @@ class VAMPIRES_API UEnemyDataAsset : public UDataAsset
GENERATED_BODY() GENERATED_BODY()
public: public:
UPROPERTY(EditDefaultsOnly) UPROPERTY(EditDefaultsOnly, Category = "Mesh")
TObjectPtr<UStaticMesh> StaticMesh; TObjectPtr<UStaticMesh> StaticMesh;
UPROPERTY(EditDefaultsOnly) UPROPERTY(EditDefaultsOnly, Category = "AI")
TObjectPtr<UBehaviorTree> BehaviorTree = nullptr; TObjectPtr<UBehaviorTree> BehaviorTree = nullptr;
UPROPERTY(EditDefaultsOnly) UPROPERTY(EditDefaultsOnly, Category = "Pickups")
TObjectPtr<UPickupDataAsset> CommonPickupDataAsset = nullptr; TObjectPtr<UPickupDataAsset> CommonPickupDataAsset = nullptr;
UPROPERTY(EditDefaultsOnly) UPROPERTY(EditDefaultsOnly, Category = "Pickups")
TObjectPtr<UPickupDataAsset> UncommonPickupDataAsset = nullptr; TObjectPtr<UPickupDataAsset> UncommonPickupDataAsset = nullptr;
UPROPERTY(EditDefaultsOnly) UPROPERTY(EditDefaultsOnly, Category = "Pickups")
TObjectPtr<UPickupDataAsset> RarePickupDataAsset = nullptr; TObjectPtr<UPickupDataAsset> RarePickupDataAsset = nullptr;
UPROPERTY(EditDefaultsOnly) UPROPERTY(EditDefaultsOnly, Category = "Sounds")
TObjectPtr<USoundBase> OnDamagedSoundBase = nullptr; TObjectPtr<USoundBase> OnDamagedSoundBase = nullptr;
UPROPERTY(EditDefaultsOnly) UPROPERTY(EditDefaultsOnly, Category = "Sounds")
TObjectPtr<USoundBase> OnDeathSoundBase = nullptr; TObjectPtr<USoundBase> OnDeathSoundBase = nullptr;
UPROPERTY(EditDefaultsOnly) UPROPERTY(EditDefaultsOnly, Category = "Particles")
TObjectPtr<UNiagaraSystem> OnDamagedNiagaraSystem; TObjectPtr<UNiagaraSystem> OnDamagedNiagaraSystem;
UPROPERTY(EditDefaultsOnly) UPROPERTY(EditDefaultsOnly, Category = "Particles")
TObjectPtr<UNiagaraSystem> OnDeathNiagaraSystem; TObjectPtr<UNiagaraSystem> OnDeathNiagaraSystem;
UPROPERTY(EditDefaultsOnly, Category = "Properties")
float MaxHealth = 100.0f;
UPROPERTY(EditDefaultsOnly, Category = "Properties")
float MovementSpeed = 300.0f;
}; };