From 0efd874aa1efca655de2ea91f90fa37ebbacf547 Mon Sep 17 00:00:00 2001 From: "PCYPC\\pcy35" Date: Wed, 8 Nov 2023 21:17:23 +0900 Subject: [PATCH] =?UTF-8?q?[=EB=B0=95=EC=B9=98=EC=98=81]=20Knockdown=20?= =?UTF-8?q?=EC=8B=9C=EC=8A=A4=ED=85=9C=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Blueprints/BP_CombatCharacter.uasset | Bin 47261 -> 47239 bytes ...rostGiant_Attck_Melee_Combo_Montage.uasset | Bin 27701 -> 27722 bytes Source/D1/CombatPlayerCharacter.cpp | 52 +++++++++++++----- Source/D1/CombatPlayerCharacter.h | 5 +- Source/D1/DamageType/AttackDamageType.h | 2 +- .../DamageType/KnockdownAttackDamageType.cpp | 9 +++ .../D1/DamageType/KnockdownAttackDamageType.h | 19 +++++++ 7 files changed, 72 insertions(+), 15 deletions(-) create mode 100644 Source/D1/DamageType/KnockdownAttackDamageType.cpp create mode 100644 Source/D1/DamageType/KnockdownAttackDamageType.h diff --git a/Content/CombatSystem/Blueprints/BP_CombatCharacter.uasset b/Content/CombatSystem/Blueprints/BP_CombatCharacter.uasset index 324529750a7085018adefca3cff0d6aaf6f1545d..4d86f80ae4227b7105f68dfcda16ed4555e179ee 100644 GIT binary patch delta 3847 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 delta 3593 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.DamageTypeClass->GetDefaultObject()); + const UAttackDamageType* damageTypeClass = Cast(DamageEvent.DamageTypeClass->GetDefaultObject()); if(!IsValid(damageTypeClass)) return false; if (DamageEvent.IsOfType(FPointDamageEvent::ClassID)) { const FPointDamageEvent* PointDamageEvent = static_cast(&DamageEvent); - - //스텟 관련 처리 - StatsComponent->TakeDamageOnStat(Damage); - - //앞에서 맞았는지 뒤에서 맞았는지 판별 - bHitFront = UKismetMathLibrary::InRange_FloatFloat(this->GetDotProductTo(EventInstigator->GetPawn()), -0.1f, 1.f); - LastHitInfo = PointDamageEvent->HitInfo; - - //play sound, effect - ApplyImpactEffect(damageTypeClass->DamageType); + ReceiveDamage(fDamage, PointDamageEvent, damageTypeClass, EventInstigator); - if (CanReceiveHitReaction()) - ApplyHitReaction(damageTypeClass->DamageType); + } + else if(DamageEvent.IsOfType(FRadialDamageEvent::ClassID)) + { + const FRadialDamageEvent* RadialDamageEvent = static_cast(&DamageEvent); + ReceiveDamage(fDamage, RadialDamageEvent, damageTypeClass, EventInstigator); } return fDamage; } @@ -722,6 +716,38 @@ void ACombatPlayerCharacter::ApplyImpactEffect(EDamageType InDamageType) UNiagaraFunctionLibrary::SpawnSystemAtLocation(GetWorld(), HitEmitter, LastHitInfo.Location); } +void ACombatPlayerCharacter::ReceiveDamage(float Damage, const FPointDamageEvent* pointDamageEvent, const UAttackDamageType* damageTypeClass, AController* eventInstigator) +{ + //스텟 관련 처리 + StatsComponent->TakeDamageOnStat(Damage); + + //앞에서 맞았는지 뒤에서 맞았는지 판별 + bHitFront = UKismetMathLibrary::InRange_FloatFloat(this->GetDotProductTo(eventInstigator->GetPawn()), -0.1f, 1.f); + LastHitInfo = pointDamageEvent->HitInfo; + + //play sound, effect + ApplyImpactEffect(damageTypeClass->DamageType); + + if (CanReceiveHitReaction()) + ApplyHitReaction(damageTypeClass->DamageType); +} + +void ACombatPlayerCharacter::ReceiveDamage(float Damage, const FRadialDamageEvent* radialDamageEvent, const UAttackDamageType* damageTypeClass, AController* eventInstigator) +{ + //스텟 관련 처리 + StatsComponent->TakeDamageOnStat(Damage); + + //앞에서 맞았는지 뒤에서 맞았는지 판별 + bHitFront = UKismetMathLibrary::InRange_FloatFloat(this->GetDotProductTo(eventInstigator->GetPawn()), -0.1f, 1.f); + LastHitInfo = radialDamageEvent->ComponentHits[0]; + + //play sound, effect + ApplyImpactEffect(damageTypeClass->DamageType); + + if (CanReceiveHitReaction()) + ApplyHitReaction(damageTypeClass->DamageType); +} + void ACombatPlayerCharacter::RotateToTarget() { RotateToTargetTimeLineComponent->PlayFromStart(); diff --git a/Source/D1/CombatPlayerCharacter.h b/Source/D1/CombatPlayerCharacter.h index 1f970ccd..ee1c508b 100644 --- a/Source/D1/CombatPlayerCharacter.h +++ b/Source/D1/CombatPlayerCharacter.h @@ -162,7 +162,10 @@ private: void SprintStaminaCost(); void ApplyHitReaction(EDamageType InDamageType); void ApplyImpactEffect(EDamageType InDamageType); - + + void ReceiveDamage(float Damage, const FPointDamageEvent* pointDamageEvent, const class UAttackDamageType* damageTypeClass, AController* eventInstigator); + void ReceiveDamage(float Damage, const FRadialDamageEvent* radialDamageEvent, const class UAttackDamageType* damageTypeClass, AController* eventInstigator); + //Timeline void RotateToTarget(); void StopRotateToTarget(); diff --git a/Source/D1/DamageType/AttackDamageType.h b/Source/D1/DamageType/AttackDamageType.h index da77d04a..a5a16cd9 100644 --- a/Source/D1/DamageType/AttackDamageType.h +++ b/Source/D1/DamageType/AttackDamageType.h @@ -8,7 +8,7 @@ #include "AttackDamageType.generated.h" /** - * 다른 DamageType 을 처리하고 싶으면 해당 Class 를 상속해서 EDamageType를 다르게 처리할 것 + * 다른 DamageType 을 처리하고 싶으면 해당 Class와 동일하게 UDamageType를 상속해서 만들 것 */ UCLASS() class D1_API UAttackDamageType : public UDamageType diff --git a/Source/D1/DamageType/KnockdownAttackDamageType.cpp b/Source/D1/DamageType/KnockdownAttackDamageType.cpp new file mode 100644 index 00000000..018b06ba --- /dev/null +++ b/Source/D1/DamageType/KnockdownAttackDamageType.cpp @@ -0,0 +1,9 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "DamageType/KnockdownAttackDamageType.h" + +UKnockdownAttackDamageType::UKnockdownAttackDamageType() +{ + DamageType = EDamageType::KnockdownDamage; +} diff --git a/Source/D1/DamageType/KnockdownAttackDamageType.h b/Source/D1/DamageType/KnockdownAttackDamageType.h new file mode 100644 index 00000000..204418ba --- /dev/null +++ b/Source/D1/DamageType/KnockdownAttackDamageType.h @@ -0,0 +1,19 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "DamageType/AttackDamageType.h" +#include "KnockdownAttackDamageType.generated.h" + +/** + * + */ +UCLASS() +class D1_API UKnockdownAttackDamageType : public UAttackDamageType +{ + GENERATED_BODY() + +public: + UKnockdownAttackDamageType(); +};