이전 강의에서 과제를 내주셨는데 , 조준을 했을시에 어떻게 줄어들까에 대한 과제를 내주셨다.
그래서 해당 구현을 다음과 같이 했다
void AShooterCharacter::CalculateCrosshairSpread(float DeltaTime)
{
FVector2D WalkSpeedRange{ 0.f,600.f };
FVector2D VelocityMultiplierRange{ 0.f,1.f };
FVector Velocity{ GetVelocity() };
Velocity.Z = 0;
// Caculate Crosshair Velocity Factor
CrosshairVelocityFactor = FMath::GetMappedRangeValueClamped(WalkSpeedRange, VelocityMultiplierRange, Velocity.Size());
// Caculate Crosshair in air Factor
if (GetCharacterMovement()->IsFalling())
{
// Spread the crosshairs slowly while in air
CrosshairInAirFactor = FMath::FInterpTo(CrosshairInAirFactor, 2.25f, DeltaTime, 2.25f);
}
else // Character is on the ground
{
// Shrink the crosshairs rapidly while on the ground
CrosshairInAirFactor = FMath::FInterpTo(CrosshairInAirFactor, 0.0f, DeltaTime, 30.0f);
}
if (bAiming)
CrosshairAimFactor = FMath::FInterpTo(CrosshairAimFactor, 0.5f, DeltaTime, 30.0f);
else
CrosshairAimFactor = FMath::FInterpTo(CrosshairAimFactor, 0.0f, DeltaTime, 30.0f);
CrosshairSpreadMultiplier = 0.5f + CrosshairVelocityFactor + CrosshairInAirFactor - CrosshairAimFactor;
}