Add Crouch functionality
This commit is contained in:
parent
08fbe9dbe1
commit
283b536242
|
@ -5,6 +5,11 @@
|
|||
|
||||
#include <GameFramework/Character.h>
|
||||
|
||||
UNakatomiCMC::UNakatomiCMC(): Safe_bWantsToSprint(false)
|
||||
{
|
||||
NavAgentProps.bCanCrouch = true;
|
||||
}
|
||||
|
||||
// Checks if we can combine the NewMove with the current move to save on data.
|
||||
// If all the data in a saved move is identical, if true, we cam tell the server to run the existing move instead.
|
||||
bool UNakatomiCMC::FSavedMove_Nakatomi::CanCombineWith(const FSavedMovePtr& NewMove, ACharacter* InCharacter,
|
||||
|
@ -83,10 +88,6 @@ FNetworkPredictionData_Client* UNakatomiCMC::GetPredictionData_Client() const
|
|||
return ClientPredictionData;
|
||||
}
|
||||
|
||||
UNakatomiCMC::UNakatomiCMC(): Safe_bWantsToSprint(false)
|
||||
{
|
||||
}
|
||||
|
||||
void UNakatomiCMC::UpdateFromCompressedFlags(uint8 Flags)
|
||||
{
|
||||
Super::UpdateFromCompressedFlags(Flags);
|
||||
|
@ -120,3 +121,13 @@ void UNakatomiCMC::DisableSprint()
|
|||
{
|
||||
Safe_bWantsToSprint = false;
|
||||
}
|
||||
|
||||
void UNakatomiCMC::EnableCrouch()
|
||||
{
|
||||
bWantsToCrouch = true;
|
||||
}
|
||||
|
||||
void UNakatomiCMC::DisableCrouch()
|
||||
{
|
||||
bWantsToCrouch = false;
|
||||
}
|
||||
|
|
|
@ -57,4 +57,10 @@ public:
|
|||
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void DisableSprint();
|
||||
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void EnableCrouch();
|
||||
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void DisableCrouch();
|
||||
};
|
||||
|
|
|
@ -187,6 +187,12 @@ void APlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputCom
|
|||
{
|
||||
Input->BindAction(PauseAction, ETriggerEvent::Completed, this, &APlayerCharacter::PauseCallback);
|
||||
}
|
||||
|
||||
if (CrouchAction)
|
||||
{
|
||||
Input->BindAction(CrouchAction, ETriggerEvent::Started, this, &APlayerCharacter::BeginCrouchCallback);
|
||||
Input->BindAction(CrouchAction, ETriggerEvent::Completed, this, &APlayerCharacter::EndCrouchCallback);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -268,17 +274,21 @@ void APlayerCharacter::QuitCallback(const FInputActionInstance& Instance)
|
|||
|
||||
void APlayerCharacter::SetSprintingCallback(const FInputActionInstance& Instance)
|
||||
{
|
||||
if (NakatomiCMC)
|
||||
UNakatomiCMC* cmc = GetCharacterMovementComponent();
|
||||
|
||||
if (cmc)
|
||||
{
|
||||
NakatomiCMC->EnableSprint();
|
||||
cmc->EnableSprint();
|
||||
}
|
||||
}
|
||||
|
||||
void APlayerCharacter::SetWalkingCallback(const FInputActionInstance& Instance)
|
||||
{
|
||||
if (NakatomiCMC)
|
||||
UNakatomiCMC* cmc = GetCharacterMovementComponent();
|
||||
|
||||
if (cmc)
|
||||
{
|
||||
NakatomiCMC->DisableSprint();
|
||||
cmc->DisableSprint();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -536,6 +546,26 @@ void APlayerCharacter::PauseCallback(const FInputActionInstance& Instance)
|
|||
}
|
||||
}
|
||||
|
||||
void APlayerCharacter::BeginCrouchCallback(const FInputActionInstance& Instance)
|
||||
{
|
||||
UNakatomiCMC* cmc = GetCharacterMovementComponent();
|
||||
|
||||
if (cmc)
|
||||
{
|
||||
cmc->EnableCrouch();
|
||||
}
|
||||
}
|
||||
|
||||
void APlayerCharacter::EndCrouchCallback(const FInputActionInstance& Instance)
|
||||
{
|
||||
UNakatomiCMC* cmc = GetCharacterMovementComponent();
|
||||
|
||||
if (cmc)
|
||||
{
|
||||
cmc->DisableCrouch();
|
||||
}
|
||||
}
|
||||
|
||||
void APlayerCharacter::OnFire()
|
||||
{
|
||||
if (!IsFiring || CurrentWeapon->GetAmmoCount() == 0)
|
||||
|
|
|
@ -65,6 +65,9 @@ public:
|
|||
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
|
||||
UInputAction* AimDownSightsAction;
|
||||
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
|
||||
UInputAction* CrouchAction;
|
||||
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
|
||||
TSoftObjectPtr<UInputMappingContext> InputMappingContext;
|
||||
|
||||
|
@ -175,6 +178,10 @@ public:
|
|||
|
||||
void PauseCallback(const FInputActionInstance& Instance);
|
||||
|
||||
void BeginCrouchCallback(const FInputActionInstance& Instance);
|
||||
|
||||
void EndCrouchCallback(const FInputActionInstance& Instance);
|
||||
|
||||
virtual void OnFire() override;
|
||||
|
||||
void WeaponCooldownHandler();
|
||||
|
|
Loading…
Reference in New Issue