Remove ability to throw while throwing animation is playing

This commit is contained in:
baz 2024-02-01 20:30:42 +00:00
parent fcb32e5679
commit 4930aff6c2
8 changed files with 95 additions and 7 deletions

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,16 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "../AnimNotify/NakatomiThrowEndNotify.h"
#include "Nakatomi/PlayerCharacter.h"
void UNakatomiThrowEndNotify::Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation)
{
APlayerCharacter* Character = Cast<APlayerCharacter>(MeshComp->GetOwner());
if (Character != nullptr)
{
Character->SetIsThrowing(false);
}
}

View File

@ -0,0 +1,19 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Animation/AnimNotifies/AnimNotify.h"
#include "NakatomiThrowEndNotify.generated.h"
/**
*
*/
UCLASS()
class NAKATOMI_API UNakatomiThrowEndNotify : public UAnimNotify
{
GENERATED_BODY()
public:
virtual void Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation) override;
};

View File

@ -0,0 +1,15 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "../AnimNotify/NakatomiThrowWeaponEndNotify.h"
#include "Nakatomi/PlayerCharacter.h"
void UNakatomiThrowWeaponEndNotify::Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation)
{
APlayerCharacter* Character = Cast<APlayerCharacter>(MeshComp->GetOwner());
if (Character != nullptr)
{
Character->RemoveCurrentWeaponFromInventory();
}
}

View File

@ -0,0 +1,20 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Animation/AnimNotifies/AnimNotify.h"
#include "NakatomiThrowWeaponEndNotify.generated.h"
/**
*
*/
UCLASS()
class NAKATOMI_API UNakatomiThrowWeaponEndNotify : public UAnimNotify
{
GENERATED_BODY()
public:
virtual void Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation) override;
};

View File

@ -701,8 +701,9 @@ float APlayerCharacter::GetWeaponSpread()
void APlayerCharacter::ThrowWeaponCallback()
{
if (CurrentWeapon)
if (CurrentWeapon && !IsThrowing)
{
IsThrowing = true;
PlayAnimMontage(ThrowWeaponAnimMontage);
}
}
@ -723,14 +724,13 @@ void APlayerCharacter::ThrowWeapon()
WeaponThrowableTemplate, SpawnLocation, FRotator::ZeroRotator);
Throwable->SetWeaponSkeletalMesh(GetCurrentWeapon()->GetSkeletalMesh());
RemoveCurrentWeaponFromInventory();
}
void APlayerCharacter::ThrowExplosiveCallback()
{
if (ThrowableInventory.Num() > 0)
{
IsThrowing = true;
PlayAnimMontage(ThrowExplosiveAnimMontage);
}
}
@ -779,3 +779,13 @@ bool APlayerCharacter::GetCrouched()
return false;
}
bool APlayerCharacter::GetIsThrowing()
{
return IsThrowing;
}
void APlayerCharacter::SetIsThrowing(bool bIsThrowing)
{
IsThrowing = bIsThrowing;
}

View File

@ -141,6 +141,8 @@ private:
USoundBase* HitMarkerSound;
bool jumpPressed = false;
bool IsThrowing = false;
public:
// Sets default values for this character's properties
@ -234,6 +236,12 @@ public:
UFUNCTION(BlueprintCallable)
bool GetCrouched();
UFUNCTION(BlueprintCallable)
bool GetIsThrowing();
UFUNCTION(BlueprintCallable)
void SetIsThrowing(bool bIsThrowing);
protected:
virtual void CalculateHits(TArray<FHitResult>* hits) override;