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) if (bFireButtonPressed)
{ {
ServerFire(); FHitResult HitResult;
TraceUnderCrosshairs(HitResult);
ServerFire(HitResult.ImpactPoint);
} }
} }
@ -103,46 +105,27 @@ void UCombatComponent::TraceUnderCrosshairs(FHitResult& TraceHitResult)
End, End,
ECollisionChannel::ECC_Visibility 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 (EquippedWeapon == nullptr) return;
if (Character) if (Character)
{ {
Character->PlayFireMontage(bAiming); Character->PlayFireMontage(bAiming);
EquippedWeapon->Fire(HitTarget); EquippedWeapon->Fire(TraceHitTarget);
} }
} }
void UCombatComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) void UCombatComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{ {
Super::TickComponent(DeltaTime, TickType, ThisTickFunction); Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
FHitResult HitResult;
TraceUnderCrosshairs(HitResult);
} }
void UCombatComponent::EquipWeapon(AWeapon* WeaponToEquip) void UCombatComponent::EquipWeapon(AWeapon* WeaponToEquip)

View File

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