75 - Replicating the Hit Target

This commit is contained in:
Kingsmedia 2022-05-05 14:29:21 +02:00
parent 780a9163f1
commit 99de487299
2 changed files with 9 additions and 28 deletions

View File

@ -70,7 +70,9 @@ void UCombatComponent::FireButtonPressed(bool bPressed)
if (bFireButtonPressed)
{
ServerFire();
FHitResult HitResult;
TraceUnderCrosshairs(HitResult);
ServerFire(HitResult.ImpactPoint);
}
}
@ -103,46 +105,27 @@ void UCombatComponent::TraceUnderCrosshairs(FHitResult& TraceHitResult)
End,
ECollisionChannel::ECC_Visibility
);
if (!TraceHitResult.bBlockingHit)
{
TraceHitResult.ImpactPoint = End;
HitTarget = End;
}
else
{
HitTarget = TraceHitResult.ImpactPoint;
DrawDebugSphere(
GetWorld(),
TraceHitResult.ImpactPoint,
12.f,
12,
FColor::Red
);
}
}
}
void UCombatComponent::ServerFire_Implementation()
void UCombatComponent::ServerFire_Implementation(const FVector_NetQuantize& TraceHitTarget)
{
MulticastFire();
MulticastFire(TraceHitTarget);
}
void UCombatComponent::MulticastFire_Implementation()
void UCombatComponent::MulticastFire_Implementation(const FVector_NetQuantize& TraceHitTarget)
{
if (EquippedWeapon == nullptr) return;
if (Character)
{
Character->PlayFireMontage(bAiming);
EquippedWeapon->Fire(HitTarget);
EquippedWeapon->Fire(TraceHitTarget);
}
}
void UCombatComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
FHitResult HitResult;
TraceUnderCrosshairs(HitResult);
}
void UCombatComponent::EquipWeapon(AWeapon* WeaponToEquip)

View File

@ -35,10 +35,10 @@ protected:
void FireButtonPressed(bool bPressed);
UFUNCTION(Server, Reliable)
void ServerFire();
void ServerFire(const FVector_NetQuantize& TraceHitTarget);
UFUNCTION(NetMulticast, Reliable)
void MulticastFire();
void MulticastFire(const FVector_NetQuantize& TraceHitTarget);
void TraceUnderCrosshairs(FHitResult& TraceHitResult);
@ -58,6 +58,4 @@ private:
float AimWalkSpeed;
bool bFireButtonPressed;
FVector HitTarget;
};