feat: slower movement when aiming

When player aiming, sprint isn't possible and walk speed is reduced to 70%
This commit is contained in:
Kubson96 2025-04-04 19:53:32 +02:00
parent 0b52fe2b4f
commit c372d9e8d5
4 changed files with 26 additions and 7 deletions

View File

@ -191,12 +191,18 @@ void UShootingComponent::StartAiming()
{
if (IsValid(CurrentGun))
{
PlayerCharacter->bIsAimingMode = true;
PlayerCharacter->GetCharacterMovement()->MaxWalkSpeed = PlayerCharacter->WalkSpeed * AimingMoveSpeedScale;
TargetFOV = CurrentGun->AimingFOV;
}
}
void UShootingComponent::StopAiming()
{
PlayerCharacter->bIsAimingMode = false;
PlayerCharacter->GetCharacterMovement()->MaxWalkSpeed = PlayerCharacter->WalkSpeed;
TargetFOV = DefaultFOV;
}
@ -206,6 +212,6 @@ void UShootingComponent::TickComponent(float DeltaTime, ELevelTick TickType, FAc
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
float CurrentFOV = CameraManager->GetFOVAngle();
float NewFOV = FMath::FInterpTo(CurrentFOV, TargetFOV, DeltaTime, AimingSpeed);
float NewFOV = FMath::FInterpTo(CurrentFOV, TargetFOV, DeltaTime, AimingAnimationSpeed);
CameraManager->SetFOV(NewFOV);
}

View File

@ -143,16 +143,22 @@ void AExoPlayerController::PlayerStopCrouch()
void AExoPlayerController::PlayerStartSprint()
{
UE_LOG(LogTemp, Display, TEXT("Start sprint"));
if (!PlayerCharacter->bIsAimingMode)
{
UE_LOG(LogTemp, Display, TEXT("Start sprint"));
PlayerCharacter->GetCharacterMovement()->MaxWalkSpeed = PlayerCharacter->SprintSpeed;
PlayerCharacter->GetCharacterMovement()->MaxWalkSpeed = PlayerCharacter->SprintSpeed;
}
}
void AExoPlayerController::PlayerStopSprint()
{
UE_LOG(LogTemp, Display, TEXT("Stop sprint"));
if (!PlayerCharacter->bIsAimingMode)
{
UE_LOG(LogTemp, Display, TEXT("Stop sprint"));
PlayerCharacter->GetCharacterMovement()->MaxWalkSpeed = PlayerCharacter->WalkSpeed;
PlayerCharacter->GetCharacterMovement()->MaxWalkSpeed = PlayerCharacter->WalkSpeed;
}
}
void AExoPlayerController::PlayerShoot()

View File

@ -5,6 +5,7 @@
#include "CoreMinimal.h"
#include "Components/ActorComponent.h"
#include <Characters/ExoPlayerCharacter.h>
#include "GameFramework/CharacterMovementComponent.h"
#include <Items/GunBase.h>
#include "Interfaces/Damageable.h"
#include "ShootingComponent.generated.h"
@ -63,8 +64,11 @@ public:
UFUNCTION(Category = "Shooting")
void StopAiming();
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Shooting")
float AimingSpeed = 30.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Aiming")
float AimingAnimationSpeed = 30.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Aiming")
float AimingMoveSpeedScale = 0.70f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Shooting")
float DropGunRange = 20.0f;

View File

@ -35,6 +35,9 @@ public:
UPROPERTY(EditAnywhere, Category = "Movement Properties")
float SprintSpeed = 1500.0f;
UPROPERTY(EditAnywhere, Category = "Aiming")
float bIsAimingMode = false;
protected:
virtual void BeginPlay() override;