From ffa9bfc84c59ced1fc20341f5f2dd0ba154ca036 Mon Sep 17 00:00:00 2001 From: Kingsmedia Date: Thu, 5 May 2022 15:02:47 +0200 Subject: [PATCH] 76 - Projectile Hit Events --- .../Weapon/Projectiles/BP_Projectile.uasset | Bin 22732 -> 23183 bytes Source/Blaster/Weapon/Projectile.cpp | 26 ++++++++++++++++++ Source/Blaster/Weapon/Projectile.h | 14 ++++++++-- 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/Content/Blueprints/Weapon/Projectiles/BP_Projectile.uasset b/Content/Blueprints/Weapon/Projectiles/BP_Projectile.uasset index e2923542a78f646e2e5b2ee7c84fec37ec345a5e..42ee6dd15d68810935cd8ea780df4ccad675816c 100644 GIT binary patch delta 5141 zcmb_gYfMx}6rPLt0)=IF*@uXrAP>O`TD3k{)?E-*SJ(x_X9_DWiXtN5tF@vrCMLE4 zJx#Suwf0AoK4Pn-KHC1Mrb&NUQ<5h2N0YW%AK2QeX^b+&T<<uCswVSuL zt!28I>9)T55xRJ39%Lotr72??miW7TtqpEp$2xyQQ89aY``UgN>a(WGqo&ogG`ISv zIk);dm1=`BtafWhv#-hDfC{!|O3{VB=7h$$Obbrw;fP@3&VjjKz*l2xWRT1nhU&{} z_jOr5GqOtJwq!M=}++aYDS5jKxK*4=~}lJ!c#enyYzc^w_2${JqV$je_4_ad)H z!`(()dt_WU6NCiphztzCb;f`jK)$Xaaovm&aO;pj#%>{wqLd`siV4@Oz=p)F!}(kx&x#nLs%ziZSY02K{JzB=TH`jL&8b-$rAx5a?F zgShQsaE%O-l1BK&VW)$?DGW?ZD$iKuJWD{y-_$FGRnCHNpkpJr;|twbzKhAE9s z8|-mS0lQ%o{HQm=0lhAD1BX#=69%1vdxipz$~K8SmX9}!NG<6OIIYh?NRg?P6BJ{4 zlh=D3aIbti^cszD$)GcB;oYOKJj3hToB@#K8pugrFDT=XY!l5(_Yg76=Zm?bs-+H? zm}-bKRtDe+MtFBTexcO4)fsQ4>P(dV1Z6K(P)>Mch~1QJ+Nt!gI4r*%p)`tWWcM}d zN6AaOVA4tD&~Gxt#joJ*$b>?(&eX=o=3|+|>x)*XvmZssZtNDb)164tu0ZaZvrQDM zLVZJ4GPdh6L%T&MRl#11A#Tk|mG*l};baOIl94!uET=a4fu^{D_3QY#3X`qQ;iS0+ zo2+S41KOSijfQwQWz8HmJB>llymYv0HI8uNUEgHuOBi={()tO=@aWN?jeClfVVlG* zf77dj%ODa{Fp*G9kf=(sN#rg&X;4%py&0B)x5TWsQ$GpKHXJ{B)Lmi6nk>{!dy=9w z<)u>9$lG&xDJ#UW$>N>U;iD3Bj#mqr&Ksh0JzwQ`@aiqr^dPMusz%3ULWwQSx;O|y zDY|qUaHQ;#~_;$NlDwnW1LaG z2owq?65$=Ox|55eHjlqoXHXLaYD7-luFmD9>W!~2xoui*k>l*aKsr1k|Ar{( zRMqnls8lW(bq+djQy**PnyRFO_)H|_Ra7pDq$G=ki#!~p#69#bFsEu)wM1~h7Kc$P zf&K+%$qoYxG7CaCxqxGZXVp!nBLHrPE-EvgPGmmrusjj-Pma9FT6?pDY*@(Kv&n|; zSzMr%}`<;3PQXmwiD3=-Kv^ZE3}yi_;f8|;|CJ0o~6jPv*aUO;I@;(v7IUYXc#DcXkA8snSJO&;dIP*y9c3+uY4e!JnfPS%sOjp! zzY*x_rF5PEZ+R@CYDz++HbK9~QV=p4HS+sN3uX$%>$g5N4k!_WiO`T4;6OyIe?rB^fa#6F!4GW)*rWBh* z7<%K7gl1$dN?Yd-#`(-H57azH?_-Fj^3D(?JwwC=SpyH3&9tuIP!WehTS)P`VfMNF sMa8o|v!5UH{+rH(hgbQDWFfbecm!%~6mOgmEAaokfCtjWeN&GA3+XJphyVZp delta 4916 zcmcIoZBUd|6uvJaiU_>Gval=&Dk7kvQkn)U3kz$Y^6i3B2`UMSp!k(K)7CUi&e#Oa zF@IF1{ivxKsbLtMOed>fHq)3kef_AW{upNF$S=z&I_G`Q+1X`xVV%Y^vz&YG^W1aJ zJ@@M!2F_|<4r_yVldqO4HC-uH+t=HPDq0evZH~tto3J zy1Lwork{+XP!er$PrG8pFlx)=-P^Wx_Ez_<>Dbk&4xDQ#82KXV;IxsR7(IGKk86*D z!T3gqN^pTEVc6Twz9@T=-_T!**;EeJq&9QAi}fw!9pv_8yg!h)D?HDu#32#;!V?2{ zyCdM;M1OmxhZG%VrmV~kWAw?j?DpZ8=)9@pQW_*6)u+3C-dWTpz-KAAs` zZ%{fy5M}TI#{R_0>pYVm_)R96LDvwEy_ZO~0gqe?mBRF@BmV#pbd4U`7A4zmr^azmabc+%v2V) z$x`JlSQd|UCz}PR^SJ#|i;>H1zg#FZoeRljHdBWTDx9+ERyv0QUuXEd3CCsVRyuwH zQ!tWKt*|VkKZ|w(2|Z^t6SAp36l4@GXSk+Q&vnr4cI^pFZ9df5bEA*rD+agXG6C$C znA2!{S~@ahKR3@y&))d>C(|eziOW=~j5SwWsejSyEbd%75u`*YXOf_i^fG!3$jq3U zw3;L(!ZxN$bCT(jOA=uQ5NY+2A*(E{ZKXlNKg5?ap39xfSc|WdJj;6SHwFnwI=h&Z z1r3&T+Z?6}I-l)YM04PmGJ8_Z1cnYp6$_!=61#dWBl)a-wN&c4GRbvffV6-BuR9aN z2k=G|potwy0exA}SIDApAeC$egR+0wL}e}tULaByow0|gXmGq-FO>NaFzMECz?Jev zjvRI%`;bh37nC(6Od>(?OU;mt7<7&|*J)Z7pDs2#REYX3Cv72;;K})il{+%1cy#0{ z4F|mASD@i5EjiubkNSh7c#^6GgaTKlRtIiZuI7Mc&Xl5{NdF)mzZ?ybjV$FZgEOw2 zMZr^8%zUYo@Xh5(tkmx(nC}EaM`ikb2fJ9QFYvGEf(fa)*m6PMo{d+nI(#KrtqMt{y3bHLZtAqza6_Kuqi zSqwupxs#UKqdDQk+R}NeWg%FT7jBv=!nMhZY)`|Is&wCHe)tU>b|FsV%{j&H4zUga z6H@SgRowsE>PdIYgzX}#kcQ%Sn$ps2PD^qTot(K?t~k)lWlu%okz37cXiI# zD$aAE?@-K#w)!etA@|p_mJMxOCYvKGJP(zdK*<-Z9E$Kq`&z9Hsv8pVkZx=!nRHJT z(S6&P=9R~tK6Li=@9#7|K^DZlDSj}0K?tFfY=MN< zRcV=IqR>}fMd$YJ-uj-7L+Vi&^b}~#aI|%Wod)VeK_Ql_ucxPbZ+Bm>vW(~(I<#zY zf&WiYvOfw?!x?+z>b3wqk6?}?Bj_pQB@Xy@!q0s}f+Eut M{U`9*3x#j}2aD%FHvj+t diff --git a/Source/Blaster/Weapon/Projectile.cpp b/Source/Blaster/Weapon/Projectile.cpp index 4b1a5a5..220ba11 100644 --- a/Source/Blaster/Weapon/Projectile.cpp +++ b/Source/Blaster/Weapon/Projectile.cpp @@ -6,6 +6,7 @@ #include "Components/BoxComponent.h" #include "GameFramework/ProjectileMovementComponent.h" #include "Kismet/GameplayStatics.h" +#include "Sound/SoundCue.h" AProjectile::AProjectile() { @@ -39,6 +40,31 @@ void AProjectile::BeginPlay() EAttachLocation::KeepWorldPosition ); } + + if (HasAuthority()) + { + CollisionBox->OnComponentHit.AddDynamic(this, &AProjectile::OnHit); + } +} + +void AProjectile::OnHit(UPrimitiveComponent* HitComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpulse, const FHitResult& Hit) +{ + Destroy(); +} + +void AProjectile::Destroyed() +{ + Super::Destroyed(); + + if (ImpactParticles) + { + UGameplayStatics::SpawnEmitterAtLocation(GetWorld(), ImpactParticles, GetActorTransform()); + } + + if (ImpactSound) + { + UGameplayStatics::PlaySoundAtLocation(this, ImpactSound, GetActorLocation()); + } } void AProjectile::Tick(float DeltaTime) diff --git a/Source/Blaster/Weapon/Projectile.h b/Source/Blaster/Weapon/Projectile.h index adefdeb..53aebe2 100644 --- a/Source/Blaster/Weapon/Projectile.h +++ b/Source/Blaster/Weapon/Projectile.h @@ -18,8 +18,12 @@ public: protected: virtual void BeginPlay() override; - -public: + + UFUNCTION() + virtual void OnHit(UPrimitiveComponent* HitComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpulse, const FHitResult& Hit); + virtual void Destroyed() override; + +private: UPROPERTY(EditAnywhere) class UBoxComponent* CollisionBox; @@ -31,4 +35,10 @@ public: class UParticleSystem* Tracer; class UParticleSystemComponent* TracerComponent; + + UPROPERTY(EditAnywhere) + UParticleSystem* ImpactParticles; + + UPROPERTY(EditAnywhere) + class USoundCue* ImpactSound; };