feat: add slide

Executing when player press crouch button (Ctrl) when sprinting (hold Shift)
This commit is contained in:
Kubson96 2025-04-18 15:14:43 +02:00
parent 674a294f9c
commit 797ec44907
4 changed files with 33 additions and 2 deletions

View File

@ -134,6 +134,12 @@ void AExoPlayerController::ResetDodge()
void AExoPlayerController::PlayerStartCrouch()
{
if (bIsSprinting)
{
PlayerCharacter->GetCharacterMovement()->MaxWalkSpeedCrouched = PlayerCharacter->SlideSpeed;
GetWorldTimerManager().SetTimer(SlideCooldownTimer, this, &AExoPlayerController::ResetSlide, PlayerCharacter->SlideCooldown, false);
}
PlayerCharacter->Crouch();
}
@ -142,12 +148,18 @@ void AExoPlayerController::PlayerStopCrouch()
PlayerCharacter->UnCrouch();
}
void AExoPlayerController::ResetSlide()
{
PlayerCharacter->GetCharacterMovement()->MaxWalkSpeedCrouched = PlayerCharacter->CrouchSpeed;
}
void AExoPlayerController::PlayerStartSprint()
{
if (!PlayerCharacter->bIsAimingMode)
{
UE_LOG(LogTemp, Display, TEXT("Start sprint"));
bIsSprinting = true;
PlayerCharacter->GetCharacterMovement()->MaxWalkSpeed = PlayerCharacter->SprintSpeed;
}
}
@ -158,6 +170,7 @@ void AExoPlayerController::PlayerStopSprint()
{
UE_LOG(LogTemp, Display, TEXT("Stop sprint"));
bIsSprinting = false;
PlayerCharacter->GetCharacterMovement()->MaxWalkSpeed = PlayerCharacter->WalkSpeed;
}
}

View File

@ -30,12 +30,21 @@ public:
UPROPERTY(EditAnywhere, Category = "Dodge Properties")
float DodgeCooldown = 2.f;
UPROPERTY(EditAnywhere, Category = "Slide Properties")
float SlideCooldown = 0.35f;
UPROPERTY(EditAnywhere, Category = "Movement Properties")
float WalkSpeed = 600.0f;
UPROPERTY(EditAnywhere, Category = "Movement Properties")
float SprintSpeed = 1500.0f;
UPROPERTY(EditAnywhere, Category = "Movement Properties")
float SlideSpeed = 2500.f;
UPROPERTY(EditAnywhere, Category = "Movement Properties")
float CrouchSpeed = 300.f;
UPROPERTY(EditAnywhere, Category = "Aiming")
float bIsAimingMode = false;

View File

@ -53,6 +53,9 @@ protected:
UFUNCTION(BlueprintCallable, Category = "Input")
void PlayerStopCrouch(); // LCtrl\C\X
UFUNCTION(BlueprintCallable, Category = "Input")
void ResetSlide();
UFUNCTION(BlueprintCallable, Category = "Input")
void PlayerStartSprint(); // LShift(Hold)
@ -114,12 +117,18 @@ protected:
UPROPERTY(EditAnywhere, Category = "Input")
TObjectPtr<UInputAction> DodgeAction;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Dodge Properties")
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Movement Properties")
FTimerHandle DodgeCooldownTimer;
UPROPERTY(EditAnywhere, Category = "Dodge Properties")
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Movement Properties")
FTimerHandle SlideCooldownTimer;
UPROPERTY(EditAnywhere, Category = "Movement Properties")
bool CanDodge = true;
UPROPERTY(EditAnywhere, Category = "Movement properties")
bool bIsSprinting = false;
UPROPERTY(EditAnywhere, Category = "Input")
TObjectPtr<UInputAction> ShootAction;