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

View File

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