From 797ec4490766eece200239dede4569518388f5ac Mon Sep 17 00:00:00 2001 From: Kubson96 <42842162+Kubson96@users.noreply.github.com> Date: Fri, 18 Apr 2025 15:14:43 +0200 Subject: [PATCH] feat: add slide Executing when player press crouch button (Ctrl) when sprinting (hold Shift) --- .../Player/BP_ExoPlayerCharacter.uasset | Bin 26015 -> 26015 bytes .../Private/Player/ExoPlayerController.cpp | 13 +++++++++++++ .../Public/Characters/ExoPlayerCharacter.h | 9 +++++++++ .../Exo/Public/Player/ExoPlayerController.h | 13 +++++++++++-- 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/Content/Blueprints/Characters/Player/BP_ExoPlayerCharacter.uasset b/Content/Blueprints/Characters/Player/BP_ExoPlayerCharacter.uasset index 04ddacbb50226fe188e1e21eb0ee3419fe3936ab..08851b4b811e2cb518972573806fdca42831648f 100644 GIT binary patch delta 72 zcmV-O0Js02%K@Lu0kFma5Pqwb&(+L?PN`)%7$v*ADznxB+7kgWv#}MWL;(u33|kii ev*liL0h1$M#YQ^E1GZL`(^+7kgev#}MWM3b^&xwE2Q eAOn-^Ub?e#U2XxB-&rgH3bUVI69coCV+aDv4j;t; diff --git a/Source/Exo/Private/Player/ExoPlayerController.cpp b/Source/Exo/Private/Player/ExoPlayerController.cpp index 26ad496..a546933 100644 --- a/Source/Exo/Private/Player/ExoPlayerController.cpp +++ b/Source/Exo/Private/Player/ExoPlayerController.cpp @@ -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; } } diff --git a/Source/Exo/Public/Characters/ExoPlayerCharacter.h b/Source/Exo/Public/Characters/ExoPlayerCharacter.h index 9039780..b798f1f 100644 --- a/Source/Exo/Public/Characters/ExoPlayerCharacter.h +++ b/Source/Exo/Public/Characters/ExoPlayerCharacter.h @@ -30,11 +30,20 @@ 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; diff --git a/Source/Exo/Public/Player/ExoPlayerController.h b/Source/Exo/Public/Player/ExoPlayerController.h index 3193b1c..dcb151f 100644 --- a/Source/Exo/Public/Player/ExoPlayerController.h +++ b/Source/Exo/Public/Player/ExoPlayerController.h @@ -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,11 +117,17 @@ protected: UPROPERTY(EditAnywhere, Category = "Input") TObjectPtr 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 ShootAction;