From 08a1b8970299f2802e382d6f1d6690b189138163 Mon Sep 17 00:00:00 2001 From: Kingsmedia Date: Fri, 20 May 2022 12:59:55 +0200 Subject: [PATCH] 138 - Weapon Scatter --- Content/Blueprints/Weapon/BP_Pistol.uasset | Bin 32918 -> 33039 bytes Content/Blueprints/Weapon/BP_Shotgun.uasset | Bin 32296 -> 32425 bytes .../Blueprints/Weapon/BP_SubmachineGun.uasset | Bin 33931 -> 34093 bytes Content/Maps/BlasterMap.umap | Bin 1342609 -> 1342609 bytes Source/Blaster/Weapon/HitScanWeapon.cpp | 125 +++++++++--------- Source/Blaster/Weapon/HitScanWeapon.h | 17 +-- Source/Blaster/Weapon/Shotgun.cpp | 54 +++++++- 7 files changed, 125 insertions(+), 71 deletions(-) diff --git a/Content/Blueprints/Weapon/BP_Pistol.uasset b/Content/Blueprints/Weapon/BP_Pistol.uasset index 735bacb51794d83821d9da4b11d4f2922fbb3504..d44bbb176393f049b35c2b9ff960183dfb4e0e48 100644 GIT binary patch delta 10852 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 O+MPDE-*aoMi~kP=20zmP delta 11410 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 U5J(|Te{ecRCfcITZgAQEf3kOSk^lez delta 10425 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 diff --git a/Content/Blueprints/Weapon/BP_SubmachineGun.uasset b/Content/Blueprints/Weapon/BP_SubmachineGun.uasset index f9e2fd0b35ee59d10482f5467099b1594571e438..401e2fcd4d6979a6c0f7e0a5d629204a24cc8a85 100644 GIT binary patch delta 11361 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 T5bx9%%UYABPWJbm`p5qd6&Goj delta 11928 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 Cs~Rr= diff --git a/Content/Maps/BlasterMap.umap b/Content/Maps/BlasterMap.umap index 49394aec8c0db081e73c298caef549df7c8f904d..bc43931f0fa5c2a02e99efec3e9338fe8c0aaab2 100644 GIT binary patch delta 284 zcmbREGjQV1zzy#h1@=`~J5J&{e3I$hdGVuLlDIgC`I>0kQM; zHR~B4sj!<`n3(CAm`tB~h0&4S#L(14&(LK0-7Ac$tR{wfhUV?;R~dnr35c12m<5Pg zftU@5*@2h?h&h3n3y8Uam}fitRo)q8=r(!tg|P^1z4KS7T+Y#P!F2b$l&hb=P7gf5 zCo(-DRYY-GGqY%WOaLDc^8>K}5DNma5D*J*j|mV76cU%<7d>bHZ@I&35mwd?>&62= yWAmQy__a(AOb{^=`1$|;|K(q053n#WG|aFHJuuxXO~iKkd_hjG?Y_w(E|LKL-eo-i delta 284 zcmbREGjQV1zzy#h1%67j>L>f3^&djNAV)GA>-p>%_po;0(l`K^;#@csY)|I3%j9AIH!IIu}L++n&`nuzW6`GTBW+kKNoTqFS}<6_YO diff --git a/Source/Blaster/Weapon/HitScanWeapon.cpp b/Source/Blaster/Weapon/HitScanWeapon.cpp index fc1ba2c..c7a6c40 100644 --- a/Source/Blaster/Weapon/HitScanWeapon.cpp +++ b/Source/Blaster/Weapon/HitScanWeapon.cpp @@ -22,72 +22,42 @@ void AHitScanWeapon::Fire(const FVector& HitTarget) { FTransform SocketTransform = MuzzleFlashSocket->GetSocketTransform(GetWeaponMesh()); FVector Start = SocketTransform.GetLocation(); - FVector End = Start + (HitTarget - Start) * 1.25f; FHitResult FireHit; - UWorld* World = GetWorld(); - if (World) + WeaponTraceHit(Start, HitTarget, FireHit); + + ABlasterCharacter* BlasterCharacter = Cast(FireHit.GetActor()); + if (BlasterCharacter && HasAuthority() && InstigatorController) { - World->LineTraceSingleByChannel( - FireHit, - Start, - End, - ECC_Visibility + UGameplayStatics::ApplyDamage( + BlasterCharacter, + Damage, + InstigatorController, + this, + UDamageType::StaticClass() + ); + } + if (ImpactParticles) + { + UGameplayStatics::SpawnEmitterAtLocation( + GetWorld(), + ImpactParticles, + FireHit.ImpactPoint, + FireHit.ImpactNormal.Rotation() + ); + } + if (HitSound) + { + UGameplayStatics::PlaySoundAtLocation( + this, + HitSound, + FireHit.ImpactPoint ); - FVector BeamEnd = End; - if (FireHit.bBlockingHit) - { - BeamEnd = FireHit.ImpactPoint; - ABlasterCharacter* BlasterCharacter = Cast(FireHit.GetActor()); - if (BlasterCharacter && HasAuthority() && InstigatorController) - { - UGameplayStatics::ApplyDamage( - BlasterCharacter, - Damage, - InstigatorController, - this, - UDamageType::StaticClass() - ); - } - - if (ImpactParticles) - { - UGameplayStatics::SpawnEmitterAtLocation( - World, - ImpactParticles, - FireHit.ImpactPoint, - FireHit.ImpactNormal.Rotation() - ); - } - - if (HitSound) - { - UGameplayStatics::PlaySoundAtLocation( - this, - HitSound, - FireHit.ImpactPoint - ); - } - } - - if (BeamParticles) - { - UParticleSystemComponent* Beam = UGameplayStatics::SpawnEmitterAtLocation( - World, - BeamParticles, - SocketTransform - ); - if (Beam) - { - Beam->SetVectorParameter(FName("Target"), BeamEnd); - } - } } - if (MuzzleFlash) { UGameplayStatics::SpawnEmitterAtLocation( - World, + GetWorld(), MuzzleFlash, SocketTransform ); @@ -103,6 +73,40 @@ void AHitScanWeapon::Fire(const FVector& HitTarget) } } +void AHitScanWeapon::WeaponTraceHit(const FVector& TraceStart, const FVector& HitTarget, FHitResult& OutHit) +{ + UWorld* World = GetWorld(); + if (World) + { + FVector End = bUseScatter ? TraceEndWithScatter(TraceStart, HitTarget) : TraceStart + (HitTarget - TraceStart) * 1.25f; + World->LineTraceSingleByChannel( + OutHit, + TraceStart, + End, + ECC_Visibility + ); + FVector BeamEnd = End; + if (OutHit.bBlockingHit) + { + BeamEnd = OutHit.ImpactPoint; + } + if (BeamParticles) + { + UParticleSystemComponent* Beam = UGameplayStatics::SpawnEmitterAtLocation( + World, + BeamParticles, + TraceStart, + FRotator::ZeroRotator, + true + ); + if (Beam) + { + Beam->SetVectorParameter(FName("Target"), BeamEnd); + } + } + } +} + FVector AHitScanWeapon::TraceEndWithScatter(const FVector& TraceStart, const FVector& HitTarget) { FVector ToTargetNormalized = (HitTarget - TraceStart).GetSafeNormal(); @@ -110,7 +114,8 @@ FVector AHitScanWeapon::TraceEndWithScatter(const FVector& TraceStart, const FVe FVector RandVec = UKismetMathLibrary::RandomUnitVector() * FMath::FRandRange(0.f, SphereRadius); FVector EndLoc = SphereCenter + RandVec; FVector ToEndLoc = EndLoc - TraceStart; - + + /* DrawDebugSphere(GetWorld(), SphereCenter, SphereRadius, 12, FColor::Red, true); DrawDebugSphere(GetWorld(), ToEndLoc, 4.f, 12, FColor::Blue, true); DrawDebugLine( @@ -120,6 +125,6 @@ FVector AHitScanWeapon::TraceEndWithScatter(const FVector& TraceStart, const FVe FColor::Cyan, true ); - + */ return FVector(TraceStart + ToEndLoc * TRACE_LENGTH / ToEndLoc.Size()); } diff --git a/Source/Blaster/Weapon/HitScanWeapon.h b/Source/Blaster/Weapon/HitScanWeapon.h index c21c2df..bb2889c 100644 --- a/Source/Blaster/Weapon/HitScanWeapon.h +++ b/Source/Blaster/Weapon/HitScanWeapon.h @@ -21,14 +21,18 @@ public: protected: FVector TraceEndWithScatter(const FVector& TraceStart, const FVector& HitTarget); + void WeaponTraceHit(const FVector& TraceStart, const FVector& HitTarget, FHitResult& OutHit); -private: - - UPROPERTY(EditAnywhere) - float Damage = 20.f; - UPROPERTY(EditAnywhere) UParticleSystem* ImpactParticles; + + UPROPERTY(EditAnywhere) + USoundCue* HitSound; + + UPROPERTY(EditAnywhere) + float Damage = 20.f; + +private: UPROPERTY(EditAnywhere) UParticleSystem* BeamParticles; @@ -39,9 +43,6 @@ private: UPROPERTY(EditAnywhere) USoundCue* FireSound; - UPROPERTY(EditAnywhere) - USoundCue* HitSound; - // Trace end with scatter UPROPERTY(EditAnywhere, Category = "Weapon Scatter") diff --git a/Source/Blaster/Weapon/Shotgun.cpp b/Source/Blaster/Weapon/Shotgun.cpp index 6c96803..aeac566 100644 --- a/Source/Blaster/Weapon/Shotgun.cpp +++ b/Source/Blaster/Weapon/Shotgun.cpp @@ -10,20 +10,68 @@ void AShotgun::Fire(const FVector& HitTarget) { AWeapon::Fire(HitTarget); - + APawn* OwnerPawn = Cast(GetOwner()); if (OwnerPawn == nullptr) return; AController* InstigatorController = OwnerPawn->GetController(); - + const USkeletalMeshSocket* MuzzleFlashSocket = GetWeaponMesh()->GetSocketByName("MuzzleFlash"); if (MuzzleFlashSocket) { FTransform SocketTransform = MuzzleFlashSocket->GetSocketTransform(GetWeaponMesh()); FVector Start = SocketTransform.GetLocation(); + TMap HitMap; for (uint32 i = 0; i < NumberOfPellets; i++) { - FVector End = TraceEndWithScatter(Start, HitTarget); + FHitResult FireHit; + WeaponTraceHit(Start, HitTarget, FireHit); + + ABlasterCharacter* BlasterCharacter = Cast(FireHit.GetActor()); + if (BlasterCharacter && HasAuthority() && InstigatorController) + { + if (HitMap.Contains(BlasterCharacter)) + { + HitMap[BlasterCharacter]++; + } + else + { + HitMap.Emplace(BlasterCharacter, 1); + } + } + if (ImpactParticles) + { + UGameplayStatics::SpawnEmitterAtLocation( + GetWorld(), + ImpactParticles, + FireHit.ImpactPoint, + FireHit.ImpactNormal.Rotation() + ); + } + if (HitSound) + { + UGameplayStatics::PlaySoundAtLocation( + this, + HitSound, + FireHit.ImpactPoint, + .5f, + FMath::FRandRange(-.5f, .5f) + ); + } + } + + for (auto HitPair : HitMap) + { + if (HitPair.Key && HasAuthority() && InstigatorController) + { + UGameplayStatics::ApplyDamage( + HitPair.Key, + Damage * HitPair.Value, + InstigatorController, + this, + UDamageType::StaticClass() + ); + } } } }