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)
|
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)
|
||||||
|
|
|
@ -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;
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue