diff --git a/Content/Assets/Animations/Eliminated.uasset b/Content/Assets/Animations/Eliminated.uasset new file mode 100644 index 0000000..f8ac067 Binary files /dev/null and b/Content/Assets/Animations/Eliminated.uasset differ diff --git a/Content/Assets/LearningKit_Games/Assets/Characters/Character/Mesh/SK_EpicCharacter_Skeleton.uasset b/Content/Assets/LearningKit_Games/Assets/Characters/Character/Mesh/SK_EpicCharacter_Skeleton.uasset index 2becfe2..a193b8b 100644 Binary files a/Content/Assets/LearningKit_Games/Assets/Characters/Character/Mesh/SK_EpicCharacter_Skeleton.uasset and b/Content/Assets/LearningKit_Games/Assets/Characters/Character/Mesh/SK_EpicCharacter_Skeleton.uasset differ diff --git a/Content/Blueprints/Character/Animation/BlasterAnimBP.uasset b/Content/Blueprints/Character/Animation/BlasterAnimBP.uasset index 87f8d0b..4657f90 100644 Binary files a/Content/Blueprints/Character/Animation/BlasterAnimBP.uasset and b/Content/Blueprints/Character/Animation/BlasterAnimBP.uasset differ diff --git a/Content/Blueprints/Character/Animation/Eliminated.uasset b/Content/Blueprints/Character/Animation/Eliminated.uasset new file mode 100644 index 0000000..4440bdd Binary files /dev/null and b/Content/Blueprints/Character/Animation/Eliminated.uasset differ diff --git a/Content/Blueprints/Character/BP_BlasterCharacter.uasset b/Content/Blueprints/Character/BP_BlasterCharacter.uasset index 8f6c972..e1aa765 100644 Binary files a/Content/Blueprints/Character/BP_BlasterCharacter.uasset and b/Content/Blueprints/Character/BP_BlasterCharacter.uasset differ diff --git a/Content/Blueprints/GameModes/BP_BlasterGameMode.uasset b/Content/Blueprints/GameModes/BP_BlasterGameMode.uasset index 8f02518..6c0fa37 100644 Binary files a/Content/Blueprints/GameModes/BP_BlasterGameMode.uasset and b/Content/Blueprints/GameModes/BP_BlasterGameMode.uasset differ diff --git a/Content/Maps/BlasterMap.umap b/Content/Maps/BlasterMap.umap index fe26872..91cf764 100644 Binary files a/Content/Maps/BlasterMap.umap and b/Content/Maps/BlasterMap.umap differ diff --git a/Source/Blaster/Character/BlasterAnimInstance.cpp b/Source/Blaster/Character/BlasterAnimInstance.cpp index d7971a5..73094a0 100644 --- a/Source/Blaster/Character/BlasterAnimInstance.cpp +++ b/Source/Blaster/Character/BlasterAnimInstance.cpp @@ -38,6 +38,7 @@ void UBlasterAnimInstance::NativeUpdateAnimation(float DeltaSeconds) bAiming = BlasterCharacter->IsAiming(); TurningInPlace = BlasterCharacter->GetTurningInPlace(); bRotateRootBone = BlasterCharacter->ShouldRotateRootBone(); + bEliminated = BlasterCharacter->IsEliminated(); // Offset Yaw for Strafing FRotator AimRotation = BlasterCharacter->GetBaseAimRotation(); FRotator MovementRotation = UKismetMathLibrary::MakeRotFromX(BlasterCharacter->GetVelocity()); diff --git a/Source/Blaster/Character/BlasterAnimInstance.h b/Source/Blaster/Character/BlasterAnimInstance.h index 8245809..66c88ac 100644 --- a/Source/Blaster/Character/BlasterAnimInstance.h +++ b/Source/Blaster/Character/BlasterAnimInstance.h @@ -75,4 +75,7 @@ private: UPROPERTY(BlueprintReadOnly, Category="Movement", meta=(AllowPrivateAccess = "true")) bool bRotateRootBone; + + UPROPERTY(BlueprintReadOnly, Category="Movement", meta=(AllowPrivateAccess = "true")) + bool bEliminated; }; diff --git a/Source/Blaster/Character/BlasterCharacter.cpp b/Source/Blaster/Character/BlasterCharacter.cpp index 30ee1bb..86a0ae2 100644 --- a/Source/Blaster/Character/BlasterCharacter.cpp +++ b/Source/Blaster/Character/BlasterCharacter.cpp @@ -100,9 +100,20 @@ void ABlasterCharacter::PlayFireMontage(bool bAiming) } } -void ABlasterCharacter::Eliminated() +void ABlasterCharacter::PlayEliminatedMontage() { - + UAnimInstance* AnimInstance = GetMesh()->GetAnimInstance(); + if (AnimInstance && EliminatedMontage) + { + UE_LOG(LogTemp, Warning, TEXT("Playing Eliminated Montage, %s"), (bEliminated ? "true" : "false")); + AnimInstance->Montage_Play(EliminatedMontage); + } +} + +void ABlasterCharacter::Eliminated_Implementation() +{ + bEliminated = true; + PlayEliminatedMontage(); } void ABlasterCharacter::PlayHitReactMontage() @@ -124,7 +135,10 @@ void ABlasterCharacter::ReceiveDamage(AActor* DamagedActor, float Damage, const Health = FMath::Clamp(Health - Damage, 0.f, MaxHealth); UpdateHUDHealth(); - PlayHitReactMontage(); + if (Health > 0.f) + { + PlayHitReactMontage(); + } if (Health == 0.f) { @@ -388,18 +402,18 @@ void ABlasterCharacter::TurnInPlace(float DeltaTime) StartingAimRotation = FRotator(0.f, GetBaseAimRotation().Yaw, 0.f); } } - switch (TurningInPlace) - { - case ETurningInPlace::ETIP_Left: - UE_LOG(LogTemp, Warning, TEXT("TurningInPlace: Left")); - break; - case ETurningInPlace::ETIP_Right: - UE_LOG(LogTemp, Warning, TEXT("TurningInPlace: Right")); - break; - case ETurningInPlace::ETIP_NotTurning: - UE_LOG(LogTemp, Warning, TEXT("TurningInPlace: NotTurning")); - break; - } + // switch (TurningInPlace) + // { + // case ETurningInPlace::ETIP_Left: + // UE_LOG(LogTemp, Warning, TEXT("TurningInPlace: Left")); + // break; + // case ETurningInPlace::ETIP_Right: + // UE_LOG(LogTemp, Warning, TEXT("TurningInPlace: Right")); + // break; + // case ETurningInPlace::ETIP_NotTurning: + // UE_LOG(LogTemp, Warning, TEXT("TurningInPlace: NotTurning")); + // break; + // } } void ABlasterCharacter::HideCameraIfCharacterClose() @@ -433,7 +447,10 @@ float ABlasterCharacter::CalculateSpeed() void ABlasterCharacter::OnRep_Health() { UpdateHUDHealth(); - PlayHitReactMontage(); + if (Health > 0.f) + { + PlayHitReactMontage(); + } } void ABlasterCharacter::UpdateHUDHealth() diff --git a/Source/Blaster/Character/BlasterCharacter.h b/Source/Blaster/Character/BlasterCharacter.h index 0ffdf25..9818187 100644 --- a/Source/Blaster/Character/BlasterCharacter.h +++ b/Source/Blaster/Character/BlasterCharacter.h @@ -21,6 +21,9 @@ public: virtual void PostInitializeComponents() override; virtual void OnRep_ReplicatedMovement() override; void PlayFireMontage(bool bAiming); + void PlayEliminatedMontage(); + + UFUNCTION(NetMulticast, Reliable) void Eliminated(); protected: @@ -81,6 +84,9 @@ private: UPROPERTY(EditAnywhere, Category = Combat) class UAnimMontage* HitReactMontage; + + UPROPERTY(EditAnywhere, Category = Combat) + class UAnimMontage* EliminatedMontage; void HideCameraIfCharacterClose(); @@ -107,6 +113,8 @@ private: void OnRep_Health(); class ABlasterPlayerController* BlasterPlayerController; + + bool bEliminated = false; public: void SetOverlappingWeapon(AWeapon* Weapon); @@ -119,4 +127,5 @@ public: FVector GetHitTarget() const; FORCEINLINE UCameraComponent* GetFollowCamera() const { return FollowCamera; } FORCEINLINE bool ShouldRotateRootBone() const { return bRotateRootBone; } + FORCEINLINE bool IsEliminated() const { return bEliminated; } }; diff --git a/Source/Blaster/GameMode/BlasterGameMode.cpp b/Source/Blaster/GameMode/BlasterGameMode.cpp index abdd53f..1056121 100644 --- a/Source/Blaster/GameMode/BlasterGameMode.cpp +++ b/Source/Blaster/GameMode/BlasterGameMode.cpp @@ -3,8 +3,14 @@ #include "BlasterGameMode.h" -void ABlasterGameMode::PlayerEliminated(ABlasterCharacter* ElimmedCharacter, ABlasterPlayerController* VictimController, - ABlasterPlayerController* AttackerController) +#include "Blaster/Character/BlasterCharacter.h" + +void ABlasterGameMode::PlayerEliminated(ABlasterCharacter* EliminatedCharacter, ABlasterPlayerController* VictimController, + ABlasterPlayerController* AttackerController) { + if (EliminatedCharacter) + { + EliminatedCharacter->Eliminated(); + } } diff --git a/Source/Blaster/GameMode/BlasterGameMode.h b/Source/Blaster/GameMode/BlasterGameMode.h index e5e8b31..0b64b0f 100644 --- a/Source/Blaster/GameMode/BlasterGameMode.h +++ b/Source/Blaster/GameMode/BlasterGameMode.h @@ -16,5 +16,5 @@ class BLASTER_API ABlasterGameMode : public AGameMode public: - virtual void PlayerEliminated(class ABlasterCharacter* ElimmedCharacter, class ABlasterPlayerController* VictimController, class ABlasterPlayerController* AttackerController); + virtual void PlayerEliminated(class ABlasterCharacter* EliminatedCharacter, class ABlasterPlayerController* VictimController, class ABlasterPlayerController* AttackerController); };