From cddfd8175c376b2490286b0f9714dcd9e1d4d88e Mon Sep 17 00:00:00 2001 From: Caleb Buhungiro Date: Fri, 12 Sep 2025 22:54:24 +0800 Subject: [PATCH] play death animation --- .../Crunch/Animation/AM_Death_Cruch.uasset | 3 ++ .../Crunch/Animation/AnimBP_Crunch.uasset | 4 +- .../Crunch/Meshes/Crunch_Skeleton.uasset | 4 +- Content/Player/CPlayerCharacter_BP.uasset | 4 +- .../Crunch/Private/Character/CCharacter.cpp | 41 ++++++++++++++++++- .../Private/Character/CPlayerCharacter.cpp | 16 ++++++++ Source/Crunch/Public/Character/CCharacter.h | 8 ++++ .../Public/Character/CPlayerCharacter.h | 6 ++- 8 files changed, 77 insertions(+), 9 deletions(-) create mode 100644 Content/Characters/Crunch/Animation/AM_Death_Cruch.uasset diff --git a/Content/Characters/Crunch/Animation/AM_Death_Cruch.uasset b/Content/Characters/Crunch/Animation/AM_Death_Cruch.uasset new file mode 100644 index 0000000..9e91602 --- /dev/null +++ b/Content/Characters/Crunch/Animation/AM_Death_Cruch.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ae07ce1fa8e6c24ca314449f4decf68357f453dc6f920cd407a939581ae8b09 +size 9688 diff --git a/Content/Characters/Crunch/Animation/AnimBP_Crunch.uasset b/Content/Characters/Crunch/Animation/AnimBP_Crunch.uasset index b3f9e54..2fe8246 100644 --- a/Content/Characters/Crunch/Animation/AnimBP_Crunch.uasset +++ b/Content/Characters/Crunch/Animation/AnimBP_Crunch.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:63051ad7b9975279aa0f0ad79592d2b0597590a7d1f0da5721fd745a5870f223 -size 428361 +oid sha256:dc6c5e33571200517e19e5e2f80e4027b9f83cf108552de1788ef8dbdfd81ee7 +size 432589 diff --git a/Content/ParagonCrunch/Characters/Heroes/Crunch/Meshes/Crunch_Skeleton.uasset b/Content/ParagonCrunch/Characters/Heroes/Crunch/Meshes/Crunch_Skeleton.uasset index 258904a..8465528 100644 --- a/Content/ParagonCrunch/Characters/Heroes/Crunch/Meshes/Crunch_Skeleton.uasset +++ b/Content/ParagonCrunch/Characters/Heroes/Crunch/Meshes/Crunch_Skeleton.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:da2870c191d4d6c6f87fe734bb4bf022873b8330db8c0938b05258a63086847a -size 59295 +oid sha256:075af5e755b52eabb9c563c98c3b4432e72ed1c3ec9b893f447631c034f2d0a5 +size 59400 diff --git a/Content/Player/CPlayerCharacter_BP.uasset b/Content/Player/CPlayerCharacter_BP.uasset index 403b10a..a047ef4 100644 --- a/Content/Player/CPlayerCharacter_BP.uasset +++ b/Content/Player/CPlayerCharacter_BP.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:56ef0ee8fb933990a7c1bdac292d746c086d5df8294c0d741cd0e5f89cfef280 -size 82119 +oid sha256:173290a0f6c780f86f56a6809c009f915f3968d75364132f3c4914af17a69247 +size 82378 diff --git a/Source/Crunch/Private/Character/CCharacter.cpp b/Source/Crunch/Private/Character/CCharacter.cpp index e01e4cc..27e010a 100644 --- a/Source/Crunch/Private/Character/CCharacter.cpp +++ b/Source/Crunch/Private/Character/CCharacter.cpp @@ -3,7 +3,10 @@ #include "Crunch/Public/Character/CCharacter.h" +#include "Components/CapsuleComponent.h" #include "Components/WidgetComponent.h" + +#include "GameFramework/CharacterMovementComponent.h" #include "GAS/CAbilitySystemComponent.h" #include "GAS/CAttributeSet.h" #include "GAS/UCAbilitySystemStatics.h" @@ -125,12 +128,46 @@ void ACCharacter::UpdateHeadStatGaugeVisibility() } } +void ACCharacter::SetStatusGaugeEnabled(bool bIsEnabled) +{ + GetWorldTimerManager().ClearTimer(HeadStatGaugeVisibilityUpdateTimerHandle); + if (bIsEnabled) + { + ConfigureOverHeadStatusWidget(); + } + else + { + OverHeadWidgetComponent->SetHiddenInGame(true); + } +} + +void ACCharacter::PlayDeathAnimation() +{ + if (DeathMontage) + { + PlayAnimMontage(DeathMontage); + } +} + void ACCharacter::StartDeathSequence() { - UE_LOG(LogTemp, Warning, TEXT("----------------------------DEAD")); + OnDead(); + PlayDeathAnimation(); + SetStatusGaugeEnabled(false); + + GetCharacterMovement()->SetMovementMode(MOVE_None); + GetCapsuleComponent()->SetCollisionEnabled(ECollisionEnabled::NoCollision); } void ACCharacter::ReSpawn() { - UE_LOG(LogTemp, Warning, TEXT("----------------------------Respawn")); + OnRespawn(); +} + +void ACCharacter::OnDead() +{ +} + +void ACCharacter::OnRespawn() +{ } diff --git a/Source/Crunch/Private/Character/CPlayerCharacter.cpp b/Source/Crunch/Private/Character/CPlayerCharacter.cpp index bc1b317..3418397 100644 --- a/Source/Crunch/Private/Character/CPlayerCharacter.cpp +++ b/Source/Crunch/Private/Character/CPlayerCharacter.cpp @@ -92,6 +92,22 @@ void ACPlayerCharacter::HandleAbilityInput(const FInputActionValue& InputActionV : AbilitySystemComponent->AbilityLocalInputReleased(static_cast(InputID)); } +void ACPlayerCharacter::OnDead() +{ + if (const auto PlayerController { GetController() }) + { + DisableInput(PlayerController); + } +} + +void ACPlayerCharacter::OnRespawn() +{ + if (const auto PlayerController { GetController() }) + { + EnableInput(PlayerController); + } +} + FVector ACPlayerCharacter::GetLookRightDir() const { return ViewCamera->GetRightVector(); diff --git a/Source/Crunch/Public/Character/CCharacter.h b/Source/Crunch/Public/Character/CCharacter.h index bae3764..762bfb2 100644 --- a/Source/Crunch/Public/Character/CCharacter.h +++ b/Source/Crunch/Public/Character/CCharacter.h @@ -57,10 +57,18 @@ private: FTimerHandle HeadStatGaugeVisibilityUpdateTimerHandle; void UpdateHeadStatGaugeVisibility(); + void SetStatusGaugeEnabled(bool bIsEnabled); /********************************************************************************************/ /* Death & Respawning */ /********************************************************************************************/ + UPROPERTY(EditDefaultsOnly, Category="Death") + TObjectPtr DeathMontage; + + void PlayDeathAnimation(); + void StartDeathSequence(); void ReSpawn(); + virtual void OnDead(); + virtual void OnRespawn(); }; diff --git a/Source/Crunch/Public/Character/CPlayerCharacter.h b/Source/Crunch/Public/Character/CPlayerCharacter.h index 55d2775..79bf0e5 100644 --- a/Source/Crunch/Public/Character/CPlayerCharacter.h +++ b/Source/Crunch/Public/Character/CPlayerCharacter.h @@ -55,5 +55,9 @@ private: void HandleLookInput(const FInputActionValue& InputActionValue); void HandleMoveInput(const FInputActionValue& InputActionValue); void HandleAbilityInput(const FInputActionValue& InputActionValue, ECAbilityInputID AbilityInputID); - + /*************************************************************************************/ + //------------------------- Death && Respawn------------------------------------------- + /*************************************************************************************/ + virtual void OnDead() override; + virtual void OnRespawn() override; };