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()
{ {
@ -24,24 +23,31 @@ void ALightningRingWeapon::FireWeaponAction_Implementation()
TArray<AActor*> targetableEnemies = OverlappedEnemies; TArray<AActor*> targetableEnemies = OverlappedEnemies;
for (int i = 0; i < LightningBolts && targetableEnemies.Num() > 0; i++) for (int i = 0; i < LightningBolts && targetableEnemies.Num() > 0; i++)
{ {
AActor* target = targetableEnemies[FMath::RandRange(0, targetableEnemies.Num() - 1)]; AActor* target = targetableEnemies[FMath::RandRange(0, targetableEnemies.Num() - 1)];
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;
UKismetSystemLibrary::SphereOverlapActors(GetWorld(), UKismetSystemLibrary::SphereOverlapActors(GetWorld(),
target->GetActorLocation(), target->GetActorLocation(),
LightingBoltRadius, LightingBoltRadius,
traceObjectTypes, traceObjectTypes,
AEnemyCharacter::StaticClass(), AEnemyCharacter::StaticClass(),
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)
{ {
@ -54,36 +60,39 @@ 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)
{ {
case 1: case 1:
LightningBolts++; LightningBolts++;
break; break;
case 2: case 2:
LightingBoltRadius += LightingBoltRadius; LightingBoltRadius += LightingBoltRadius;
Damage += 10; Damage += 10;
break; break;
case 3: case 3:
LightningBolts++; LightningBolts++;
break; break;
case 4: case 4:
LightingBoltRadius += LightingBoltRadius; LightingBoltRadius += LightingBoltRadius;
Damage += 20; Damage += 20;
break; break;
case 5: case 5:
LightningBolts++; LightningBolts++;
break; break;
case 6: case 6:
LightingBoltRadius += LightingBoltRadius; LightingBoltRadius += LightingBoltRadius;
Damage += 20; Damage += 20;
break; break;
case 7: case 7:
LightningBolts++; LightningBolts++;
break; break;
default: default:
return false; return false;
} }
return true; return true;

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();