From e56044608a3fccce936d40f157143ed382e07b78 Mon Sep 17 00:00:00 2001 From: Kingsmedia Date: Thu, 5 May 2022 12:51:14 +0200 Subject: [PATCH] 72 - Spawning the Projectile --- .../Blueprints/Weapon/BP_AssaultRifle.uasset | Bin 30217 -> 30503 bytes .../Weapon/Projectiles/BP_Projectile.uasset | Bin 0 -> 22039 bytes Source/Blaster/Components/CombatComponent.cpp | 4 +- Source/Blaster/Components/CombatComponent.h | 2 + Source/Blaster/Weapon/ProjectileWeapon.cpp | 35 ++++++++++++++++++ Source/Blaster/Weapon/ProjectileWeapon.h | 6 ++- Source/Blaster/Weapon/Weapon.cpp | 2 +- Source/Blaster/Weapon/Weapon.h | 2 +- 8 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 Content/Blueprints/Weapon/Projectiles/BP_Projectile.uasset diff --git a/Content/Blueprints/Weapon/BP_AssaultRifle.uasset b/Content/Blueprints/Weapon/BP_AssaultRifle.uasset index a76ea7f35d8f11f3dc54b560d20594a63965c03e..f356d0de208fedbe829a7892d54167a8718d2032 100644 GIT binary patch delta 11050 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 H`$PW$!O8tq delta 10519 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 o{m@@5R#Fwiy2bxNFr1w*F15rV6&~Zms z9mQh+M?pmgJa9lj@mT$>yXx+$>%Cr}tNet)84(?IK-lm9>b!>Y z4_G*J;nwSSZ4LJ(*tLVsp1Z8t_s~agoVM=mf8X8zJc2EKYf)f*QT5I}Gp4K?y?M(s zfDL=Ae$_M8BOfd~Vd(PLuHNJsN3c(`-`&u^`k#huS^VllYo`2=*Oy=y8V6ooQnI0V z`@mn{sw-!oK7wHGOIN;IHvQ@04?Z+tS;y(V?ZXN7MeBx7ce$5;ed2prYl^m&rH>}q ziv^4wM|G7JQmN|2bUGeS3K&ZD#QZ#Wc1~GYZc%PdKAq*}P0GrhR5UTyomnz5JHM2< zsFB`}v7b@B{A9*Xqk4FM#y+PL;Fg@u*md-~kA62SS@?3lFDFdd@c4iIi~GY%?|JvJ zjn@=D7@59p$`i+Yf7j2_&>sDO0dU0FZMTni4WK$BqoH&{My(oDJ-Rx6LVBja|8Y$k z$B!LL__0nrznu=7pIq(Z=Ytsgd834yH5vO5qz4%1D1~&MQSNC|Gu*+b8jb`)hMsYe z>IrM1jGBmcnd&tHK~>Li*EHFe=`mOAyzJHcPojQ`A`wpqwF;{dqk~m$_}>7eYc2`~ zwFM<4ixJR5?9kqm{%|V5#adgN8Zz9`=H{SU69|P=ADf>(Vj46Wi);+&0cyi$44*t1 zbebyyKA#$@41sUfzWJiGGXb5Zws^c9RjTT%*J`4X7PW4k8mv|QI=kuNOU}cMmWbui zfRDX;!r+E8oY2aUp+-WUV1uq!hk_mK+8y`IAT!#x)ph8G+SaH>bV#z)=rcB^*ZPjI z%KDvh%Xaby=GL^JrHhk$ZTJ=J+FaePMj`>9S{4nFVyTmp|9taoc(hwvSh~<4eXu7t z-}CuEv?Z~lo?zf|l{7`>0B-#+^WN)2xMGi?wrG(K_U+>3FMyf^R6!#*=3U&6T+;&9 zX%Qn3YGDIUIp-DLSPKS8rCNxHvc|zLEx-^J=3p64x94n&<-4XL%7X0WGj`0a6U0da?g z;CB_&JpCC&^pV4~p#N|8ueb?ZlLr}|I@PO%d^&r+{)%I16ta?lPF!?wu`j=Er~Bsw zEA<5o)mNf;zwdt{HTKlr9eA=+m7!;E+CDg^tb?ZlzN zRmOIHKjcv;p2Ns()rcDMs_cO^AFoGnP#3CRcIEB^gO8^Re^B!nY+%P-{|N^y!i=j5 zEBvCk<}a-mxQ3nOaF{#1X&>AXFfR9hKh$fz1k`By zOcp8oLWNDxLT67LTp5Ip`0Voau`l$8BWc{>m^$^2Lr}EvKN%>C-ru+zVpbciYNW_( zXc6}8p4t0(%cv2K8i<{IDD-Q)W%}9Fvc}_`=V?)=X4Q^rtK{kkPC-wY?fPc^HjEb0fa7Xtl(D6Y znqNlO0#Q$fVpC@vcm<}z$hLw58@R=@0w$^Rw5z_xfV!aC@7Gm>UHRgk5(_>{)7pyK zv?!Ud>9l`-37V?&wyJF&c4*u63&3JsfPxI!BBUFUC=Zx*-bf%!u0OU`fr9EZzu_3p zSFL`3H5jZjB9>LpdoD7ZH|1Se;7qpa06d^xU1g5=p@S^o?^F zsLN5qU2FaAi{FD18Yw!F6RbU}mk*w1US^lDhRk4}Yyxz9zGmM}9@q}GXPD}vxt<20 z8ew~Vy&naaHeBQYW=Pug{*@&dvJzdaMbrjU-R!%{@fSdDi7O59V0mrfHI?uk32q3% z=SqEST(3KNW0;r@KK|8nXYy%JCLL_xq@4bgv)Geur*M?EGCUp{qdCiVv)NzfF_L1y#&KidFVj`SQ{pi^?9(NiZiPPy zi>Xt;aDf{UJ(ym8-KkKMxVCP)YutS*m~n`kQJH=*A48bKZS_|S@--pAa`9t_$*^6= zZvr!Q#dS>(fMvb$`U_Yd5P*RTp;bCF6K5wZO0aG_d2CYJR9w(i@My|Rmt4_lOy-1) z+*xLcizZR;ri>YrC<-OgR+%ZznnnF5YNv_wWbOV)?OIZ77f7+)Whu1#g6Pgmv0X5Q zc6+G5OHyn%C&hM`rr1u}CYheWpFhR^!YQ_kq}Z-9g?4`+{^loX*CueNE=sZ8#VNLv zzMDvYPP(&F>~D60c9Lf~CNMtCWoqm=`j+70c3#aD7YIk^i~R|#U}eF0?L1~B4zjKM(Y~~9RxucL(*vb;RexrBt=@14sN4vi??1g-wHCg!K+CsYMW=SMhB3iH^XcfX)sC-gv*4;U#N(??fcSniVR}Nap^)SClT023AO0Nd9?#?lh zTzeg~phL`&k{0xcvim5}!uW+esNo9z=?9wdd%!^#t`8XUI~3sLHO}!vCJnv!p&#zS z@&z^El6TZjJY8A^IM@s|)-0ViX9*Htz(edZDSowc11;c^Eu0dqgzlt!wu*TaG~#=W zrHVxhZzGp$e5=#EtA1upDW&+4HriUiV!+yDwYMY)%2AcHj~Ss2CJUo;&5lmv+vtQ1 zs@SqqeSA~NPrDg9ZjB|)_iy4EhABHO8Ig%t+{EHW^>}$PiW}3p$uf+{@ulS`x%d^! z>~wo2HHuIDRbnFwyI1C7G_`wS=Bj90tr`vnyx6G|yBPt}6U>;&PIZc0qUwCN1pCY= z$T}>2$aN3L#NOuEQw0{u7w57p=xNcpe`jS+%+1froXByNI#!!}#~fp=Kq(8j z`7-o36vd7ux5wW{q&3vJ{Aj{(>|>FOZ4huGw3Qz?EsBZTR$@ni#?se&i+&oJS8x>%k$N~m&i0Mw&7BeNk4=e3ah!>8hEqXNwjUq`zj;V}Oaky*RH=%FmdFf5O3j}B$oZ4ZqB#TWTzse(6G1a9kpMK?pcN3<7V0mm3U6;{$ zKAXtf+vB{avP!<4vCy_!a;&sSa+wDRnafCnb_{XSo6BHR7p0`8c6%z5j2IQW0#M)6C(1YL!7VN-58jS_u3D_L77OWHA{EBsl452@Y6kx0(7$kSrAEwl8VYFpkv zg}l{Gyd&oa|6Re)Im-G2U1V)7^wa5woDw#c`t1roBqjaHQQ)W92>GOoDdIlq4}YuK zv6Qpx?AXTGxo{27n|1Ovto-bmE|s=JQ?iK6{0dkJ{Y~Pz+yu%NCQt@AiE_LG%JRx7 z3z|gv1dhej3i%#jIW%{b61sSdjD~ zV}=bGm6Cp?KbGluIKN>!bp@%BI-{GgL9bFc)D2W2YjI>Rh@m zA)E=tnTy(+(KNYsWVUQu(7D>oAX?7s*IrR$e*k|y9dB~&3G0Mtt~d89p*8qxa_ki} z_h!pXrvn>pL&3*1D}c9OWx5_CWTG)!8O z0-~veNh+|6gqf6Zuk1gIqAmCaOw!1^2WM}|DCBUS&Av>Dx~4EEjtcT9lV_<7sS8`*Ia~w( z(6?#P?&v$#qR3jMe@dx3cuYWL5_5A6D+UmE{PsBSWrZjLOK6 zYmK~ID^BJ*JS3H|Y(`u={w@+RI9J4^*qD`T#V6@~GF~N$!?~8nNuSAe#7>juFrt&1 z*I-2_y-R8!^;j(V>?#)9cqy4PdP;iT8M%m*U1@iMm?bddEuw#M<8cV{fB4q3(B?nj zvnZKz{*PV0xF!ERpXgbPWY2Ek*^f{EXfRk zlw|Pe4~lHe>En5a(Hv|(*Mrl94e{U+yaq+~2vZ6NAls;a|JL%)bggg#EJFb z90ZY#B(PO9I!pH4xyDOGDDnnLZHfu*`bf_Wb@fV1nYc^#313G^`7y3?vppLnYRiy} zExAzYr8DPX2<5Px!|fceSNu5KR&(BLr?EuBLug~VLc*kQ7!rJW>t^*R&C57WfKEd>4|Xcubyo3!5tHi$%?c2)!7qDA)m4!5DXH=P?}Z6>j~0}%;|kgBAymS^ZS)>AfzjXrZh(bL7(CmFP_tj zqee$M<#%S0L-MeWwPWMW&2K+jTm5*S729{T?7B%R4BbeVK!lo_f5W7z#dE6eDgS0b z?X8PeCxSU&Lg244kcD{d!h3lr&fZN39brgmFAJE$3GZ6A!=RJ{Q^K4z`0d^2`}Nxv z?{nY2?~*si?|daQ5v+Xl1SX*jz;%gmblLf|TQdAeW5+F+l=5^vb|#9JaoN~w zg!nrjSY@}rxazCht}nj*snIun{*m&P)FxCWLkVKdIg6(czUrc9r?1#^!P2#%fpv*s zJs4Qhm>`>K>6TN1-^qI(z54Z0*G;`~!Qeeqt;amdpSN#?KDs*3dRLpmD75n1_E_@FMMLGh)o(U00iHHFn<|3wt z!^OZKDSni6lIIBG$2}y<-+BDlJ9^&7$DDD|v`5@;t$j4@{`pStknsbnVSnwqV+Y^2 zeEQao7vIZYK688`SP$ZdH0ELaFb3T%rv$&F`#o~$KL4HNYnPs}^L^Kd4-&zC%JGBi zylBOnXDvOm>=*al{Hj*)o6i%$20PSb#g9=0T~2ARHIH=sc4?K_zR6>XzBk#9cDc{43@0wStV4tK0c)pVxBk z`(WO(qI*m4x#i!+1Xjt8&@bX83YI^MZ(9BPcZO7y{c1(a%DtyGPE7>+DZ8LkF7S>Y zk8`1bg#9gyd6h-zut1B<%it4ZdMmvVU=}!jYE*f9NCT26 zmNZzRBt#&$Pbfd;^@Iov*n|jzbAs4KL;(}U@{?PZ9vkUi=&^4fWlSH3Shn&M&HNq@ z>5|rV^lczhr{lPe)rB6sE~j|7_6fJZ6P!l@Kna9st>;mUNT8)fjimGL%g87yJ~gGA z2GjWWh;*fuzRp8!n}eE{-|LlJc0r>xVBkYybPG`nj#G41RYp|=j8UR@lUgBht19-+ zxT1xWW)eX71+7;}7{!#xOn%y;x?wWYEML5+%sbr|uo1E63 z4oKVXKalu|;X`~ntNZHGJNIKaRMG!@X2`5B5os7{y)SirQBza69fu#Hhhjg3HyJspP(@S literal 0 HcmV?d00001 diff --git a/Source/Blaster/Components/CombatComponent.cpp b/Source/Blaster/Components/CombatComponent.cpp index 432e7b5..97f315f 100644 --- a/Source/Blaster/Components/CombatComponent.cpp +++ b/Source/Blaster/Components/CombatComponent.cpp @@ -106,9 +106,11 @@ void UCombatComponent::TraceUnderCrosshairs(FHitResult& TraceHitResult) if (!TraceHitResult.bBlockingHit) { TraceHitResult.ImpactPoint = End; + HitTarget = End; } else { + HitTarget = TraceHitResult.ImpactPoint; DrawDebugSphere( GetWorld(), TraceHitResult.ImpactPoint, @@ -131,7 +133,7 @@ void UCombatComponent::MulticastFire_Implementation() if (Character) { Character->PlayFireMontage(bAiming); - EquippedWeapon->Fire(); + EquippedWeapon->Fire(HitTarget); } } diff --git a/Source/Blaster/Components/CombatComponent.h b/Source/Blaster/Components/CombatComponent.h index 764dda3..f667313 100644 --- a/Source/Blaster/Components/CombatComponent.h +++ b/Source/Blaster/Components/CombatComponent.h @@ -58,4 +58,6 @@ private: float AimWalkSpeed; bool bFireButtonPressed; + + FVector HitTarget; }; diff --git a/Source/Blaster/Weapon/ProjectileWeapon.cpp b/Source/Blaster/Weapon/ProjectileWeapon.cpp index c2a9878..1bfcb8d 100644 --- a/Source/Blaster/Weapon/ProjectileWeapon.cpp +++ b/Source/Blaster/Weapon/ProjectileWeapon.cpp @@ -3,3 +3,38 @@ #include "ProjectileWeapon.h" +#include "Projectile.h" +#include "Engine/SkeletalMeshSocket.h" + +void AProjectileWeapon::Fire(const FVector& HitTarget) +{ + Super::Fire(HitTarget); + + APawn* InstigatorPawn = Cast(GetOwner()); + const USkeletalMeshSocket* MuzzleFlashSocket = GetWeaponMesh()->GetSocketByName(FName("MuzzleFlash")); + if (MuzzleFlashSocket) + { + FTransform SocketTransform = MuzzleFlashSocket->GetSocketTransform(GetWeaponMesh()); + // From muzzle flash socket to hit location from TraceUnderCrosshairs + FVector ToTarget = HitTarget - SocketTransform.GetLocation(); + FRotator TargetRotation = ToTarget.Rotation(); + + if (ProjectileClass && InstigatorPawn) + { + FActorSpawnParameters SpawnParams; + SpawnParams.Owner = GetOwner(); + SpawnParams.Instigator = InstigatorPawn; + + UWorld* World = GetWorld(); + if (World) + { + World->SpawnActor( + ProjectileClass, + SocketTransform.GetLocation(), + TargetRotation, + SpawnParams + ); + } + } + } +} diff --git a/Source/Blaster/Weapon/ProjectileWeapon.h b/Source/Blaster/Weapon/ProjectileWeapon.h index f8e62b8..7437f09 100644 --- a/Source/Blaster/Weapon/ProjectileWeapon.h +++ b/Source/Blaster/Weapon/ProjectileWeapon.h @@ -13,7 +13,11 @@ UCLASS() class BLASTER_API AProjectileWeapon : public AWeapon { GENERATED_BODY() + virtual void Fire(const FVector& HitTarget) override; - +private: + + UPROPERTY(EditAnywhere) + TSubclassOf ProjectileClass; }; diff --git a/Source/Blaster/Weapon/Weapon.cpp b/Source/Blaster/Weapon/Weapon.cpp index 7dc73f3..e456805 100644 --- a/Source/Blaster/Weapon/Weapon.cpp +++ b/Source/Blaster/Weapon/Weapon.cpp @@ -109,7 +109,7 @@ void AWeapon::ShowPickupWidget(bool bShowWidget) } } -void AWeapon::Fire() +void AWeapon::Fire(const FVector& HitTarget) { if (FireAnimation) { diff --git a/Source/Blaster/Weapon/Weapon.h b/Source/Blaster/Weapon/Weapon.h index ba0bb6c..31dc2af 100644 --- a/Source/Blaster/Weapon/Weapon.h +++ b/Source/Blaster/Weapon/Weapon.h @@ -25,7 +25,7 @@ public: AWeapon(); virtual void GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const override; void ShowPickupWidget(bool bShowWidget); - void Fire(); + virtual void Fire(const FVector& HitTarget); protected: virtual void BeginPlay() override;