diff --git a/Config/DefaultEngine.ini b/Config/DefaultEngine.ini index 7ad672d9..f2c8de09 100644 --- a/Config/DefaultEngine.ini +++ b/Config/DefaultEngine.ini @@ -147,4 +147,7 @@ ManualIPAddress= +FunctionRedirects=(OldName="/Script/D1.ICombatInterface.PerformCombatAttack",NewName="/Script/D1.ICombatInterface.PerformAttack") +FunctionRedirects=(OldName="/Script/D1.ICombatInterface.SetIFrames",NewName="/Script/D1.ICombatInterface.SetIFrame") +PropertyRedirects=(OldName="/Script/D1.MasterAI.DeathAnimation",NewName="/Script/D1.MasterAI.DeathAnimations") ++PropertyRedirects=(OldName="/Script/D1.MasterAI.MainWeaponCollisionComponent",NewName="/Script/D1.MasterAI.RightWeaponCollisionComponent") ++PropertyRedirects=(OldName="/Script/D1.MasterAI.RightWeaponCollisionComponent",NewName="/Script/D1.MasterAI.MainCollisionComponent") ++PropertyRedirects=(OldName="/Script/D1.MasterAI.LeftWeaponCollisionComponent",NewName="/Script/D1.MasterAI.SubCollisionComponent") diff --git a/Content/CombatSystem/Blueprints/AI/BP_BossEnemy.uasset b/Content/CombatSystem/Blueprints/AI/BP_BossEnemy.uasset index 138b7900..3c4f738e 100644 Binary files a/Content/CombatSystem/Blueprints/AI/BP_BossEnemy.uasset and b/Content/CombatSystem/Blueprints/AI/BP_BossEnemy.uasset differ diff --git a/Content/CombatSystem/Blueprints/AI/FrostGiantBoss/BP_FrostGiantBoss.uasset b/Content/CombatSystem/Blueprints/AI/FrostGiantBoss/BP_FrostGiantBoss.uasset new file mode 100644 index 00000000..c1318a85 Binary files /dev/null and b/Content/CombatSystem/Blueprints/AI/FrostGiantBoss/BP_FrostGiantBoss.uasset differ diff --git a/Content/CombatSystem/Blueprints/AI/FrostGiantBoss/BT_FrostGiant.uasset b/Content/CombatSystem/Blueprints/AI/FrostGiantBoss/BT_FrostGiant.uasset new file mode 100644 index 00000000..f887e932 Binary files /dev/null and b/Content/CombatSystem/Blueprints/AI/FrostGiantBoss/BT_FrostGiant.uasset differ diff --git a/Content/CombatSystem/Blueprints/AI/GruntlingEnemy/Animations/Attacks/Gruntling_Sword_Attack_Swing_Montage.uasset b/Content/CombatSystem/Blueprints/AI/GruntlingEnemy/Animations/Attacks/Gruntling_Sword_Attack_Swing_Montage.uasset index a5258300..1839b986 100644 Binary files a/Content/CombatSystem/Blueprints/AI/GruntlingEnemy/Animations/Attacks/Gruntling_Sword_Attack_Swing_Montage.uasset and b/Content/CombatSystem/Blueprints/AI/GruntlingEnemy/Animations/Attacks/Gruntling_Sword_Attack_Swing_Montage.uasset differ diff --git a/Content/CombatSystem/Blueprints/Animnotifies/RotateToTarget_AN.uasset b/Content/CombatSystem/Blueprints/Animnotifies/RotateToTarget_AN.uasset new file mode 100644 index 00000000..61eda53a Binary files /dev/null and b/Content/CombatSystem/Blueprints/Animnotifies/RotateToTarget_AN.uasset differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/ABP_FrostGiant.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/ABP_FrostGiant.uasset new file mode 100644 index 00000000..dc5c7781 Binary files /dev/null and b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/ABP_FrostGiant.uasset differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Attacks/ExoGame_FrostGiant_Attck_Melee_A.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Attacks/ExoGame_FrostGiant_Attck_Melee_A.uasset new file mode 100644 index 00000000..0511627b Binary files /dev/null and b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Attacks/ExoGame_FrostGiant_Attck_Melee_A.uasset differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Attacks/ExoGame_FrostGiant_Attck_Melee_A_Montage.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Attacks/ExoGame_FrostGiant_Attck_Melee_A_Montage.uasset new file mode 100644 index 00000000..b044157c Binary files /dev/null and b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Attacks/ExoGame_FrostGiant_Attck_Melee_A_Montage.uasset differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Attacks/ExoGame_FrostGiant_Attck_Melee_C.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Attacks/ExoGame_FrostGiant_Attck_Melee_C.uasset new file mode 100644 index 00000000..58b4ee70 Binary files /dev/null and b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Attacks/ExoGame_FrostGiant_Attck_Melee_C.uasset differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Attacks/ExoGame_FrostGiant_Attck_Melee_C_Montage.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Attacks/ExoGame_FrostGiant_Attck_Melee_C_Montage.uasset new file mode 100644 index 00000000..461a0827 Binary files /dev/null and b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Attacks/ExoGame_FrostGiant_Attck_Melee_C_Montage.uasset differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Attacks/ExoGame_FrostGiant_Attck_Melee_Combo.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Attacks/ExoGame_FrostGiant_Attck_Melee_Combo.uasset new file mode 100644 index 00000000..5f6bf29a Binary files /dev/null and b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Attacks/ExoGame_FrostGiant_Attck_Melee_Combo.uasset differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Attacks/ExoGame_FrostGiant_Attck_Melee_Combo_Montage.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Attacks/ExoGame_FrostGiant_Attck_Melee_Combo_Montage.uasset new file mode 100644 index 00000000..adef76af Binary files /dev/null and b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Attacks/ExoGame_FrostGiant_Attck_Melee_Combo_Montage.uasset differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Attacks/FrostGiant_Attack_MeleeB_Montage.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Attacks/FrostGiant_Attack_MeleeB_Montage.uasset new file mode 100644 index 00000000..c68b260d Binary files /dev/null and b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Attacks/FrostGiant_Attack_MeleeB_Montage.uasset differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/ExoGame_FrostGiant_Attck_Melee_A.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/ExoGame_FrostGiant_Attck_Melee_A.uasset deleted file mode 100644 index 92a2089b..00000000 Binary files a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/ExoGame_FrostGiant_Attck_Melee_A.uasset and /dev/null differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/ExoGame_FrostGiant_Attck_Melee_C.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/ExoGame_FrostGiant_Attck_Melee_C.uasset deleted file mode 100644 index 51a7b613..00000000 Binary files a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/ExoGame_FrostGiant_Attck_Melee_C.uasset and /dev/null differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/ExoGame_FrostGiant_Attck_Melee_Combo.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/ExoGame_FrostGiant_Attck_Melee_Combo.uasset deleted file mode 100644 index de1fc8c8..00000000 Binary files a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/ExoGame_FrostGiant_Attck_Melee_Combo.uasset and /dev/null differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/ExoGame_FrostGiant_Intro.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/ExoGame_FrostGiant_Intro.uasset deleted file mode 100644 index 20a72f72..00000000 Binary files a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/ExoGame_FrostGiant_Intro.uasset and /dev/null differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/ExoGame_FrostGiant_React_KnockBack_Front.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/ExoGame_FrostGiant_React_KnockBack_Front.uasset deleted file mode 100644 index 7660b766..00000000 Binary files a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/ExoGame_FrostGiant_React_KnockBack_Front.uasset and /dev/null differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/ExoGame_Troll_Death_.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/ExoGame_Troll_Death_.uasset new file mode 100644 index 00000000..7414d069 Binary files /dev/null and b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/ExoGame_Troll_Death_.uasset differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/HitReactions/ExoGame_FrostGiant_React_KnockBack_Front.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/HitReactions/ExoGame_FrostGiant_React_KnockBack_Front.uasset new file mode 100644 index 00000000..4d66894e Binary files /dev/null and b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/HitReactions/ExoGame_FrostGiant_React_KnockBack_Front.uasset differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/HitReactions/FrostGiant_React_Front_Montage.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/HitReactions/FrostGiant_React_Front_Montage.uasset new file mode 100644 index 00000000..8a10d0df Binary files /dev/null and b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/HitReactions/FrostGiant_React_Front_Montage.uasset differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Intro/ExoGame_FrostGiant_Intro.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Intro/ExoGame_FrostGiant_Intro.uasset new file mode 100644 index 00000000..c5fe17d3 Binary files /dev/null and b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Intro/ExoGame_FrostGiant_Intro.uasset differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Intro/ExoGame_FrostGiant_Intro_Loop_Montage1.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Intro/ExoGame_FrostGiant_Intro_Loop_Montage1.uasset new file mode 100644 index 00000000..4cafe10a Binary files /dev/null and b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Intro/ExoGame_FrostGiant_Intro_Loop_Montage1.uasset differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Intro/ExoGame_FrostGiant_Intro_Montage.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Intro/ExoGame_FrostGiant_Intro_Montage.uasset new file mode 100644 index 00000000..7b7a86a8 Binary files /dev/null and b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Intro/ExoGame_FrostGiant_Intro_Montage.uasset differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Locomotion/ExoGame_FrostGiant_Walk_Fwd.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Locomotion/ExoGame_FrostGiant_Walk_Fwd.uasset new file mode 100644 index 00000000..58c66b3b Binary files /dev/null and b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Locomotion/ExoGame_FrostGiant_Walk_Fwd.uasset differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Locomotion/FrostGiantBlendSpace1D.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Locomotion/FrostGiantBlendSpace1D.uasset new file mode 100644 index 00000000..0de53220 Binary files /dev/null and b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Locomotion/FrostGiantBlendSpace1D.uasset differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Locomotion/FrostGiant_Idle_Anim.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Locomotion/FrostGiant_Idle_Anim.uasset new file mode 100644 index 00000000..da3a595c Binary files /dev/null and b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/Enemy_Frost_Giant_All_Animation/Locomotion/FrostGiant_Idle_Anim.uasset differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/FrostGiant_IKRig.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/FrostGiant_IKRig.uasset new file mode 100644 index 00000000..37004fec Binary files /dev/null and b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/FrostGiant_IKRig.uasset differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/RTG_TrollToFrostGiant.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/RTG_TrollToFrostGiant.uasset new file mode 100644 index 00000000..c3135791 Binary files /dev/null and b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/RTG_TrollToFrostGiant.uasset differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/SK_Enemy_FrostGiant_Captain_Skeleton.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/SK_Enemy_FrostGiant_Captain_Skeleton.uasset index 1f5b37cc..552430a5 100644 Binary files a/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/SK_Enemy_FrostGiant_Captain_Skeleton.uasset and b/Content/InfinityBladeAdversaries/Enemy/Enemy_Frost_Giant/SK_Enemy_FrostGiant_Captain_Skeleton.uasset differ diff --git a/Content/InfinityBladeAdversaries/Enemy/Enemy_Troll/Troll_IKRig.uasset b/Content/InfinityBladeAdversaries/Enemy/Enemy_Troll/Troll_IKRig.uasset new file mode 100644 index 00000000..707d37a0 Binary files /dev/null and b/Content/InfinityBladeAdversaries/Enemy/Enemy_Troll/Troll_IKRig.uasset differ diff --git a/Content/Maps/IceLandMap.umap b/Content/Maps/IceLandMap.umap index 7761cbfe..f011bfcb 100644 Binary files a/Content/Maps/IceLandMap.umap and b/Content/Maps/IceLandMap.umap differ diff --git a/Content/ParagonGideon/Animations/LightSword/LightAttacks/LightAttack01_Gideon_Montage.uasset b/Content/ParagonGideon/Animations/LightSword/LightAttacks/LightAttack01_Gideon_Montage.uasset index d2cf451f..aade3e54 100644 Binary files a/Content/ParagonGideon/Animations/LightSword/LightAttacks/LightAttack01_Gideon_Montage.uasset and b/Content/ParagonGideon/Animations/LightSword/LightAttacks/LightAttack01_Gideon_Montage.uasset differ diff --git a/Content/ParagonGideon/Animations/LightSword/LightAttacks/LightAttack02_Gideon_Montage.uasset b/Content/ParagonGideon/Animations/LightSword/LightAttacks/LightAttack02_Gideon_Montage.uasset index 1c240ad2..960363f1 100644 Binary files a/Content/ParagonGideon/Animations/LightSword/LightAttacks/LightAttack02_Gideon_Montage.uasset and b/Content/ParagonGideon/Animations/LightSword/LightAttacks/LightAttack02_Gideon_Montage.uasset differ diff --git a/Content/ParagonGideon/Animations/LightSword/LightAttacks/LightAttack03_Gideon_Montage.uasset b/Content/ParagonGideon/Animations/LightSword/LightAttacks/LightAttack03_Gideon_Montage.uasset index 96513c66..74971908 100644 Binary files a/Content/ParagonGideon/Animations/LightSword/LightAttacks/LightAttack03_Gideon_Montage.uasset and b/Content/ParagonGideon/Animations/LightSword/LightAttacks/LightAttack03_Gideon_Montage.uasset differ diff --git a/Source/D1/AI/BossEnemy.cpp b/Source/D1/AI/BossEnemy.cpp index 85712622..75d552af 100644 --- a/Source/D1/AI/BossEnemy.cpp +++ b/Source/D1/AI/BossEnemy.cpp @@ -41,8 +41,9 @@ ABossEnemy::ABossEnemy() //Setting MainWeaponCollisionComponent //Setting others is Parents - MainWeaponCollisionComponent->OnHitDelegate.BindUObject(this, &ABossEnemy::OnHit); - + MainCollisionComponent->OnHitDelegate.BindUObject(this, &ABossEnemy::OnHit); + SubCollisionComponent->OnHitDelegate.BindUObject(this, &ABossEnemy::OnHit); + //Setting CombatComponent //Setting others is Parents CombatComponent->OnCombatToggled.AddUObject(this, &ABossEnemy::OnCombatToggled); @@ -51,11 +52,7 @@ ABossEnemy::ABossEnemy() void ABossEnemy::BeginPlay() { //Blueprint에서 UMG 생성 - Super::BeginPlay(); - - MainWeaponCollisionComponent->SetCollisionMeshComponent(WeaponMeshComponent); - MainWeaponCollisionComponent->AddActorToIgnore(this); } void ABossEnemy::OnTargetSet(AActor* NewTarget) diff --git a/Source/D1/AI/FrostGiantBoss.cpp b/Source/D1/AI/FrostGiantBoss.cpp new file mode 100644 index 00000000..d39f3f08 --- /dev/null +++ b/Source/D1/AI/FrostGiantBoss.cpp @@ -0,0 +1,34 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "AI/FrostGiantBoss.h" + +#include "Components/CapsuleComponent.h" +#include "Components/CollisionComponent.h" + +AFrostGiantBoss::AFrostGiantBoss() +{ + // Set size for collision capsule + GetCapsuleComponent()->InitCapsuleSize(90.f, 200.f); + GetMesh()->SetRelativeLocation(FVector(0.f, 0.f, -192.f)); + + MainCollisionComponent->SetStartSocketName(TEXT("RightWeaponStart")); + MainCollisionComponent->SetEndSocketName(TEXT("RightWeaponEnd")); + MainCollisionComponent->SetTraceRaius(50.f); + SubCollisionComponent->SetStartSocketName(TEXT("LeftWeaponStart")); + SubCollisionComponent->SetEndSocketName(TEXT("LeftWeaponEnd")); + SubCollisionComponent->SetTraceRaius(50.f); +} + +void AFrostGiantBoss::BeginPlay() +{ + Super::BeginPlay(); + + MainCollisionComponent->SetCollisionMeshComponent(GetMesh()); + MainCollisionComponent->AddActorToIgnore(this); + SubCollisionComponent->SetCollisionMeshComponent(GetMesh()); + SubCollisionComponent->AddActorToIgnore(this); + + if(IsValid(SubIntro)) + PlayAnimMontage(SubIntro); +} diff --git a/Source/D1/AI/FrostGiantBoss.h b/Source/D1/AI/FrostGiantBoss.h new file mode 100644 index 00000000..f712d4b2 --- /dev/null +++ b/Source/D1/AI/FrostGiantBoss.h @@ -0,0 +1,26 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "AI/BossEnemy.h" +#include "FrostGiantBoss.generated.h" + +/** + * + */ +UCLASS() +class D1_API AFrostGiantBoss : public ABossEnemy +{ + GENERATED_BODY() + +public: + AFrostGiantBoss(); + +protected: + virtual void BeginPlay() override; + +private: + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Montage|Actions", meta = (AllowPrivateAccess = "true")) + TObjectPtr SubIntro; +}; diff --git a/Source/D1/AI/GruntlingEnemy.cpp b/Source/D1/AI/GruntlingEnemy.cpp index 0e1113f6..9ef06868 100644 --- a/Source/D1/AI/GruntlingEnemy.cpp +++ b/Source/D1/AI/GruntlingEnemy.cpp @@ -40,7 +40,7 @@ AGruntlingEnemy::AGruntlingEnemy() //Setting MainWeaponCollisionComponent //Setting others is Parents - MainWeaponCollisionComponent->OnHitDelegate.BindUObject(this, &AGruntlingEnemy::OnHit); + MainCollisionComponent->OnHitDelegate.BindUObject(this, &AGruntlingEnemy::OnHit); //Setting CombatComponent //Setting others is Parents @@ -51,8 +51,8 @@ void AGruntlingEnemy::BeginPlay() { Super::BeginPlay(); - MainWeaponCollisionComponent->SetCollisionMeshComponent(WeaponMeshComponent); - MainWeaponCollisionComponent->AddActorToIgnore(this); + MainCollisionComponent->SetCollisionMeshComponent(WeaponMeshComponent); + MainCollisionComponent->AddActorToIgnore(this); UUI_HealthBar* HealthBarRef = Cast(HealthBarComponent->GetWidget()); if (HealthBarRef) //ExposeOnSpawn 대용으로 사용 diff --git a/Source/D1/AI/HeavyMobEnemy.cpp b/Source/D1/AI/HeavyMobEnemy.cpp index b4788f61..868ebc70 100644 --- a/Source/D1/AI/HeavyMobEnemy.cpp +++ b/Source/D1/AI/HeavyMobEnemy.cpp @@ -40,7 +40,7 @@ AHeavyMobEnemy::AHeavyMobEnemy() //Setting MainWeaponCollisionComponent //Setting others is Parents - MainWeaponCollisionComponent->OnHitDelegate.BindUObject(this, &AHeavyMobEnemy::OnHit); + MainCollisionComponent->OnHitDelegate.BindUObject(this, &AHeavyMobEnemy::OnHit); //Setting CombatComponent //Setting others is Parents @@ -51,8 +51,8 @@ void AHeavyMobEnemy::BeginPlay() { Super::BeginPlay(); - MainWeaponCollisionComponent->SetCollisionMeshComponent(WeaponMeshComponent); - MainWeaponCollisionComponent->AddActorToIgnore(this); + MainCollisionComponent->SetCollisionMeshComponent(WeaponMeshComponent); + MainCollisionComponent->AddActorToIgnore(this); if(APlayerController* playerController = UGameplayStatics::GetPlayerController(GetWorld(), 0)) { diff --git a/Source/D1/AI/MasterAI.cpp b/Source/D1/AI/MasterAI.cpp index 4d2f1672..7f2e3198 100644 --- a/Source/D1/AI/MasterAI.cpp +++ b/Source/D1/AI/MasterAI.cpp @@ -83,18 +83,29 @@ AMasterAI::AMasterAI() StatsComponent->SetMaxStatValue(EStats::Damage, 300.f); StatsComponent->InitializeStats(); - // Setting MainWeaponCollisionComponent + // Setting WeaponCollisionComponent // Setting OnHit Func is Child Class - MainWeaponCollisionComponent = CreateDefaultSubobject(TEXT("CollisionComponent")); - MainWeaponCollisionComponent->SetTraceRaius(20.f); - MainWeaponCollisionComponent->SetStartSocketName(TEXT("WeaponStart")); - MainWeaponCollisionComponent->SetEndSocketName(TEXT("WeaponEnd")); + MainCollisionComponent = CreateDefaultSubobject(TEXT("MainCollisionComponent")); + MainCollisionComponent->SetTraceRaius(20.f); + MainCollisionComponent->SetStartSocketName(TEXT("WeaponStart")); + MainCollisionComponent->SetEndSocketName(TEXT("WeaponEnd")); TArray> InputCollisionObjectTypes; InputCollisionObjectTypes.Add(UEngineTypes::ConvertToObjectType(ECollisionChannel::ECC_Pawn)); - MainWeaponCollisionComponent->SetCollisionObjectTypes(InputCollisionObjectTypes); - MainWeaponCollisionComponent->SetDrawDebugType(EDrawDebugTrace::None); + MainCollisionComponent->SetCollisionObjectTypes(InputCollisionObjectTypes); + MainCollisionComponent->SetDrawDebugType(EDrawDebugTrace::None); FGameplayTagContainer GameplayTags(FCombatGameplayTags::Get().Character_Enemy); - MainWeaponCollisionComponent->SetGameplayTagsIgnore(GameplayTags); + MainCollisionComponent->SetGameplayTagsIgnore(GameplayTags); + + SubCollisionComponent = CreateDefaultSubobject(TEXT("SubCollisionComponent")); + SubCollisionComponent->SetTraceRaius(20.f); + SubCollisionComponent->SetStartSocketName(TEXT("WeaponStart")); + SubCollisionComponent->SetEndSocketName(TEXT("WeaponEnd")); + TArray> LeftInputCollisionObjectTypes; + LeftInputCollisionObjectTypes.Add(UEngineTypes::ConvertToObjectType(ECollisionChannel::ECC_Pawn)); + SubCollisionComponent->SetCollisionObjectTypes(LeftInputCollisionObjectTypes); + SubCollisionComponent->SetDrawDebugType(EDrawDebugTrace::None); + FGameplayTagContainer LeftGameplayTags(FCombatGameplayTags::Get().Character_Enemy); + SubCollisionComponent->SetGameplayTagsIgnore(LeftGameplayTags); //Settings OwnedGameplayTags OwnedGameplayTags.AddTag(FCombatGameplayTags::Get().Character_Enemy); @@ -209,12 +220,36 @@ void AMasterAI::SetCanMove_Implementation(bool inputCanMove) void AMasterAI::ActivateCollision_Implementation(ECollisionPart CollisionPart) { - MainWeaponCollisionComponent->ActivateCollision(); + switch (CollisionPart) + { + case ECollisionPart::MainWeapon: + MainCollisionComponent->ActivateCollision(); + break; + case ECollisionPart::OffhandWeapon: + SubCollisionComponent->ActivateCollision(); + break; + case ECollisionPart::RightFoot: + break; + default: + break; + } } void AMasterAI::DeactivateCollision_Implementation(ECollisionPart CollisionPart) { - MainWeaponCollisionComponent->DeactivateCollision(); + switch (CollisionPart) + { + case ECollisionPart::MainWeapon: + MainCollisionComponent->DeactivateCollision(); + break; + case ECollisionPart::OffhandWeapon: + SubCollisionComponent->DeactivateCollision(); + break; + case ECollisionPart::RightFoot: + break; + default: + break; + } } void AMasterAI::SetIFrame_Implementation(bool InputEnableIFrame) @@ -222,6 +257,11 @@ void AMasterAI::SetIFrame_Implementation(bool InputEnableIFrame) bEnableIFrame = InputEnableIFrame; } +void AMasterAI::RotateToTarget_Implementation() +{ + RotateToTargetTL(); +} + float AMasterAI::PerformAction(FGameplayTag ActionTag, FGameplayTag StateTag, int32 MontageIndex, bool bRandomIndex) { TArray montages = GetActionMontage(ActionTag); @@ -276,7 +316,6 @@ float AMasterAI::PerformAttack(FGameplayTag AttackType, int32 AttackIndex, bool } else { - RotateToTarget(); StateManagerComponent->SetCurrentState(FCombatGameplayTags::Get().Character_State_Attacking); StateManagerComponent->SetCurrentAction(AttackType); @@ -360,7 +399,7 @@ void AMasterAI::CharacterStateEnd(FGameplayTag CharState) {/*None*/} else if (FCombatGameplayTags::Get().Character_State_Attacking == CharState) { - StopRotateToTarget(); + StopRotateToTargetTL(); } else if (FCombatGameplayTags::Get().Character_State_Dodging == CharState) {/*None*/} @@ -461,12 +500,12 @@ void AMasterAI::ApplyImpactEffect(EDamageType InDamageType) UNiagaraFunctionLibrary::SpawnSystemAtLocation(GetWorld(), HitEmitter, LastHitInfo.Location); } -void AMasterAI::RotateToTarget() +void AMasterAI::RotateToTargetTL() { RotateToTargetTimeLineComponent->PlayFromStart(); } -void AMasterAI::StopRotateToTarget() +void AMasterAI::StopRotateToTargetTL() { RotateToTargetTimeLineComponent->Stop(); } @@ -643,6 +682,8 @@ TArray AMasterAI::GetActionMontage(FGameplayTag characterAction) outputArr.Add(EnterCombat); else if (FCombatGameplayTags::Get().Character_Action_ExitCombat == characterAction) outputArr.Add(ExitCombat); + else if (FCombatGameplayTags::Get().Character_Action_Intro == characterAction) + outputArr.Add(Intro); return outputArr; } diff --git a/Source/D1/AI/MasterAI.h b/Source/D1/AI/MasterAI.h index 8d6abc18..3a464456 100644 --- a/Source/D1/AI/MasterAI.h +++ b/Source/D1/AI/MasterAI.h @@ -31,7 +31,9 @@ protected: UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category="Components", meta=(AllowPrivateAccess="true")) TObjectPtr StatsComponent; UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category="Components", meta=(AllowPrivateAccess="true")) - TObjectPtr MainWeaponCollisionComponent; + TObjectPtr MainCollisionComponent; + UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category="Components", meta=(AllowPrivateAccess="true")) + TObjectPtr SubCollisionComponent; protected: // APawn interface @@ -67,6 +69,9 @@ public: UFUNCTION(BlueprintCallable, BlueprintNativeEvent) void SetIFrame(bool InputEnableIFrame); virtual void SetIFrame_Implementation(bool InputEnableIFrame) override; + UFUNCTION(BlueprintCallable, BlueprintNativeEvent) + void RotateToTarget(); + virtual void RotateToTarget_Implementation() override; virtual EMovementSpeedMode GetCombatMovementSpeedMode() override { return GetMovementSpeedMode(); } virtual float PerformAction(FGameplayTag ActionTag, FGameplayTag StateTag, int32 MontageIndex, bool bRandomIndex); @@ -99,10 +104,9 @@ private: void ApplyHitReaction(EDamageType InDamageType); void ApplyImpactEffect(EDamageType InDamageType); - //Timeline - void RotateToTarget(); - void StopRotateToTarget(); + void RotateToTargetTL(); + void StopRotateToTargetTL(); UFUNCTION() void RotateToTargetUpdate(float Value); @@ -168,6 +172,8 @@ private: TObjectPtr EnterCombat; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Montage|Actions", meta = (AllowPrivateAccess = "true")) TObjectPtr ExitCombat; + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Montage|Actions", meta = (AllowPrivateAccess = "true")) + TObjectPtr Intro; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Patrol", meta = (AllowPrivateAccess = "true")) TArray> PatrolPoints; diff --git a/Source/D1/AI/MobEnemy.cpp b/Source/D1/AI/MobEnemy.cpp index 3575b95d..2278e8b7 100644 --- a/Source/D1/AI/MobEnemy.cpp +++ b/Source/D1/AI/MobEnemy.cpp @@ -34,7 +34,7 @@ AMobEnemy::AMobEnemy() //Setting MainWeaponCollisionComponent //Setting others is Parents - MainWeaponCollisionComponent->OnHitDelegate.BindUObject(this, &AMobEnemy::OnHit); + MainCollisionComponent->OnHitDelegate.BindUObject(this, &AMobEnemy::OnHit); //Setting CombatComponent //Setting others is Parents @@ -45,8 +45,8 @@ void AMobEnemy::BeginPlay() { Super::BeginPlay(); - MainWeaponCollisionComponent->SetCollisionMeshComponent(GetWeaponMesh()); - MainWeaponCollisionComponent->AddActorToIgnore(this); + MainCollisionComponent->SetCollisionMeshComponent(GetWeaponMesh()); + MainCollisionComponent->AddActorToIgnore(this); UUI_HealthBar* HealthBarRef = Cast(HealthBarComponent->GetWidget()); if (HealthBarRef) //ExposeOnSpawn 대용으로 사용 diff --git a/Source/D1/Animation/FrostGiantAnimInstance.cpp b/Source/D1/Animation/FrostGiantAnimInstance.cpp new file mode 100644 index 00000000..32f900c8 --- /dev/null +++ b/Source/D1/Animation/FrostGiantAnimInstance.cpp @@ -0,0 +1,26 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "Animation/FrostGiantAnimInstance.h" + +#include "GameFramework/Character.h" +#include "GameFramework/CharacterMovementComponent.h" + +void UFrostGiantAnimInstance::NativeInitializeAnimation() +{ + Super::NativeInitializeAnimation(); + + BossCharacter = Cast(GetOwningActor()); + if(BossCharacter) + CharacterMovementComponent = BossCharacter->GetCharacterMovement(); +} + +void UFrostGiantAnimInstance::NativeUpdateAnimation(float DeltaSeconds) +{ + Super::NativeUpdateAnimation(DeltaSeconds); + + if(!IsValid(BossCharacter) || !IsValid(CharacterMovementComponent)) + return; + + GroundSpeed = CharacterMovementComponent->Velocity.Length(); +} diff --git a/Source/D1/Animation/FrostGiantAnimInstance.h b/Source/D1/Animation/FrostGiantAnimInstance.h new file mode 100644 index 00000000..ad5fac2a --- /dev/null +++ b/Source/D1/Animation/FrostGiantAnimInstance.h @@ -0,0 +1,27 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Animation/AnimInstance.h" +#include "FrostGiantAnimInstance.generated.h" + +/** + * + */ +UCLASS() +class D1_API UFrostGiantAnimInstance : public UAnimInstance +{ + GENERATED_BODY() + +protected: + virtual void NativeInitializeAnimation() override; + virtual void NativeUpdateAnimation(float DeltaSeconds) override; +private: + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="References", meta=(AllowPrivateAccess="true")) + TObjectPtr BossCharacter; + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="References", meta=(AllowPrivateAccess="true")) + TObjectPtr CharacterMovementComponent; + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="EssentialMovementData", meta=(AllowPrivateAccess="true")) + float GroundSpeed; +}; diff --git a/Source/D1/Definitions/CombatGameplayTags.cpp b/Source/D1/Definitions/CombatGameplayTags.cpp index 03f67f87..158d66e7 100644 --- a/Source/D1/Definitions/CombatGameplayTags.cpp +++ b/Source/D1/Definitions/CombatGameplayTags.cpp @@ -70,6 +70,11 @@ void FCombatGameplayTags::InitializeNativeGameplayTags() FString("Action ExitCombat") ); + GameplayTags.Character_Action_Intro = UGameplayTagsManager::Get().AddNativeGameplayTag( + FName("Character.Action.Intro"), + FString("Action Intro") + ); + GameplayTags.Character_Action_GeneralAction = UGameplayTagsManager::Get().AddNativeGameplayTag( FName("Character.Action.GeneralAction"), FString("Action GeneralAction") diff --git a/Source/D1/Definitions/CombatGameplayTags.h b/Source/D1/Definitions/CombatGameplayTags.h index e3768048..82a3da82 100644 --- a/Source/D1/Definitions/CombatGameplayTags.h +++ b/Source/D1/Definitions/CombatGameplayTags.h @@ -27,6 +27,7 @@ public: FGameplayTag Character_Action_Dodge; FGameplayTag Character_Action_EnterCombat; FGameplayTag Character_Action_ExitCombat; + FGameplayTag Character_Action_Intro; FGameplayTag Character_Action_GeneralAction; FGameplayTag Character_Action_Attack_ChargedAttack; FGameplayTag Character_Action_Attack_FallingAttack; diff --git a/Source/D1/Interface/CombatInterface.h b/Source/D1/Interface/CombatInterface.h index 88f216e0..e896eec6 100644 --- a/Source/D1/Interface/CombatInterface.h +++ b/Source/D1/Interface/CombatInterface.h @@ -43,6 +43,8 @@ public: void DeactivateCollision(ECollisionPart CollisionPart); UFUNCTION(BlueprintCallable, BlueprintNativeEvent) void SetIFrame(bool InputEnableIFrame); + UFUNCTION(BlueprintCallable, BlueprintNativeEvent) + void RotateToTarget(); UFUNCTION() virtual EMovementSpeedMode GetCombatMovementSpeedMode() = 0; @@ -50,5 +52,6 @@ public: virtual float PerformAction(FGameplayTag ActionTag, FGameplayTag StateTag = FCombatGameplayTags::Get().Character_State_GeneralActionState, int32 MontageIndex = 0, bool bRandomIndex = false); UFUNCTION(Category="CombatActions") virtual float PerformAttack(FGameplayTag AttackType, int32 AttackIndex, bool bRandomIndex = false); + };