72 - Spawning the Projectile
This commit is contained in:
parent
53a50536f1
commit
e56044608a
Binary file not shown.
Binary file not shown.
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -58,4 +58,6 @@ private:
|
|||
float AimWalkSpeed;
|
||||
|
||||
bool bFireButtonPressed;
|
||||
|
||||
FVector HitTarget;
|
||||
};
|
||||
|
|
|
@ -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<APawn>(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<AProjectile>(
|
||||
ProjectileClass,
|
||||
SocketTransform.GetLocation(),
|
||||
TargetRotation,
|
||||
SpawnParams
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,11 @@ UCLASS()
|
|||
class BLASTER_API AProjectileWeapon : public AWeapon
|
||||
{
|
||||
GENERATED_BODY()
|
||||
virtual void Fire(const FVector& HitTarget) override;
|
||||
|
||||
|
||||
private:
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
TSubclassOf<class AProjectile> ProjectileClass;
|
||||
|
||||
};
|
||||
|
|
|
@ -109,7 +109,7 @@ void AWeapon::ShowPickupWidget(bool bShowWidget)
|
|||
}
|
||||
}
|
||||
|
||||
void AWeapon::Fire()
|
||||
void AWeapon::Fire(const FVector& HitTarget)
|
||||
{
|
||||
if (FireAnimation)
|
||||
{
|
||||
|
|
|
@ -25,7 +25,7 @@ public:
|
|||
AWeapon();
|
||||
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
|
||||
void ShowPickupWidget(bool bShowWidget);
|
||||
void Fire();
|
||||
virtual void Fire(const FVector& HitTarget);
|
||||
|
||||
protected:
|
||||
virtual void BeginPlay() override;
|
||||
|
|
Loading…
Reference in New Issue