Add Niagara System to Lightning Ring

This commit is contained in:
baz 2025-07-23 21:07:37 +01:00
parent 692bd2d38e
commit a0cb52c17e
4 changed files with 58 additions and 43 deletions

Binary file not shown.

BIN
Content/Weapons/LightningRing/NS_LIghtningRingEffect.uasset (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -2,11 +2,10 @@
#include "LightningRingWeapon.h" #include "LightningRingWeapon.h"
#include "Components/SphereComponent.h"
#include "Kismet/GameplayStatics.h" #include "Kismet/GameplayStatics.h"
#include "Kismet/KismetSystemLibrary.h" #include "Kismet/KismetSystemLibrary.h"
#include "vampires/EnemyCharacter.h" #include "vampires/EnemyCharacter.h"
#include "vampires/HealthComponent.h" #include "NiagaraFunctionLibrary.h"
ALightningRingWeapon::ALightningRingWeapon() ALightningRingWeapon::ALightningRingWeapon()
{ {
@ -31,7 +30,7 @@ void ALightningRingWeapon::FireWeaponAction_Implementation()
TArray<TEnumAsByte<EObjectTypeQuery>> traceObjectTypes; TArray<TEnumAsByte<EObjectTypeQuery>> traceObjectTypes;
traceObjectTypes.Add(UEngineTypes::ConvertToObjectType(ECC_Pawn)); traceObjectTypes.Add(UEngineTypes::ConvertToObjectType(ECC_Pawn));
TArray<AActor*> actorsToIgnore = TArray<AActor*>({ GetOwner() }); TArray<AActor*> actorsToIgnore = TArray<AActor*>({GetOwner()});
TArray<AActor*> hitResults; TArray<AActor*> hitResults;
@ -43,6 +42,13 @@ void ALightningRingWeapon::FireWeaponAction_Implementation()
actorsToIgnore, actorsToIgnore,
hitResults); hitResults);
if (LightningEffectSystem)
{
float scale = FMath::FloorToFloat((CurrentLevel + 2.0f) / 2.0f);
UNiagaraFunctionLibrary::SpawnSystemAtLocation(this, LightningEffectSystem, target->GetActorLocation(),
GetActorRotation(), FVector(scale));
}
for (AActor* EnemyHitResult : hitResults) for (AActor* EnemyHitResult : hitResults)
{ {
UGameplayStatics::ApplyDamage(EnemyHitResult, Damage, nullptr, this, nullptr); UGameplayStatics::ApplyDamage(EnemyHitResult, Damage, nullptr, this, nullptr);
@ -54,7 +60,10 @@ void ALightningRingWeapon::FireWeaponAction_Implementation()
bool ALightningRingWeapon::UpgradeWeapon_Implementation() bool ALightningRingWeapon::UpgradeWeapon_Implementation()
{ {
if (!Super::UpgradeWeapon_Implementation()) return false; if (!Super::UpgradeWeapon_Implementation())
{
return false;
}
switch (CurrentLevel) switch (CurrentLevel)
{ {

View File

@ -6,6 +6,7 @@
#include "../Weapon.h" #include "../Weapon.h"
#include "LightningRingWeapon.generated.h" #include "LightningRingWeapon.generated.h"
class UNiagaraSystem;
class AEnemyCharacter; class AEnemyCharacter;
class USphereComponent; class USphereComponent;
/** /**
@ -17,13 +18,15 @@ class VAMPIRES_API ALightningRingWeapon : public AWeapon
GENERATED_BODY() GENERATED_BODY()
public: public:
UPROPERTY(EditAnywhere, BlueprintReadWrite) UPROPERTY(EditAnywhere, BlueprintReadWrite)
int LightningBolts = 1; int LightningBolts = 1;
UPROPERTY(EditAnywhere, BlueprintReadWrite) UPROPERTY(EditAnywhere, BlueprintReadWrite)
float LightingBoltRadius = 200.0f; float LightingBoltRadius = 200.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TObjectPtr<UNiagaraSystem> LightningEffectSystem;
public: public:
ALightningRingWeapon(); ALightningRingWeapon();