75 - Replicating the Hit Target
This commit is contained in:
parent
780a9163f1
commit
99de487299
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue