diff --git a/Assets/Animations/EnemyAnimationController.controller b/Assets/Animations/EnemyAnimationController.controller
index 5251511b..ac697f67 100644
--- a/Assets/Animations/EnemyAnimationController.controller
+++ b/Assets/Animations/EnemyAnimationController.controller
@@ -156,7 +156,7 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
- m_Motion: {fileID: -7717634560727564301, guid: 079bd00af1b92964d8973dcbf2dcd21f, type: 3}
+ m_Motion: {fileID: -7717634560727564301, guid: 4005a77aa7d531742b1de1bec27001b1, type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
diff --git a/Assets/Animations/PlayerAnimationController.controller b/Assets/Animations/PlayerAnimationController.controller
index b988cdd2..e2e7550f 100644
--- a/Assets/Animations/PlayerAnimationController.controller
+++ b/Assets/Animations/PlayerAnimationController.controller
@@ -139,7 +139,7 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
- m_Motion: {fileID: -7717634560727564301, guid: 079bd00af1b92964d8973dcbf2dcd21f, type: 3}
+ m_Motion: {fileID: -7717634560727564301, guid: 0f6fd9302e489b94d96774e2713b1317, type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
diff --git a/Assets/External_Used/Animations/Boss_Melee_Slash_Return_RootMotion.fbx b/Assets/External_Used/Animations/Boss_Melee_Slash_Return_RootMotion.fbx
new file mode 100644
index 00000000..ccc6b4d8
Binary files /dev/null and b/Assets/External_Used/Animations/Boss_Melee_Slash_Return_RootMotion.fbx differ
diff --git a/Assets/External_Used/Animations/Melee_Slash_Return.fbx.meta b/Assets/External_Used/Animations/Boss_Melee_Slash_Return_RootMotion.fbx.meta
similarity index 99%
rename from Assets/External_Used/Animations/Melee_Slash_Return.fbx.meta
rename to Assets/External_Used/Animations/Boss_Melee_Slash_Return_RootMotion.fbx.meta
index e9b8bc2d..079047fa 100644
--- a/Assets/External_Used/Animations/Melee_Slash_Return.fbx.meta
+++ b/Assets/External_Used/Animations/Boss_Melee_Slash_Return_RootMotion.fbx.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 05b69b4b9ac11f14f8a36997c49e8445
+guid: d3e4690f866332b43b86ee7005291cd0
ModelImporter:
serializedVersion: 22200
internalIDToNameTable: []
@@ -15,7 +15,7 @@ ModelImporter:
resampleCurves: 1
optimizeGameObjects: 0
removeConstantScaleCurves: 0
- motionNodeName:
+ motionNodeName: Root
rigImportErrors:
rigImportWarnings:
animationImportErrors:
@@ -33,7 +33,7 @@ ModelImporter:
extraUserProperties: []
clipAnimations:
- serializedVersion: 16
- name: A_Attack_LightCombo01A_ReturnToIdle_Sword
+ name: A_Attack_LightCombo01A_ReturnToIdle_RootMotion_Sword
takeName: A_Attack_Light01A_ReturnToIdle
internalID: -8265974341663887746
firstFrame: 25
@@ -46,12 +46,12 @@ ModelImporter:
hasAdditiveReferencePose: 0
loopTime: 0
loopBlend: 0
- loopBlendOrientation: 1
- loopBlendPositionY: 1
- loopBlendPositionXZ: 1
- keepOriginalOrientation: 1
+ loopBlendOrientation: 0
+ loopBlendPositionY: 0
+ loopBlendPositionXZ: 0
+ keepOriginalOrientation: 0
keepOriginalPositionY: 1
- keepOriginalPositionXZ: 1
+ keepOriginalPositionXZ: 0
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
diff --git a/Assets/External_Used/Animations/Boss_Melee_Slash_RootMotion.fbx b/Assets/External_Used/Animations/Boss_Melee_Slash_RootMotion.fbx
new file mode 100644
index 00000000..d852c1b0
Binary files /dev/null and b/Assets/External_Used/Animations/Boss_Melee_Slash_RootMotion.fbx differ
diff --git a/Assets/External_Used/Animations/Melee_Slash.fbx.meta b/Assets/External_Used/Animations/Boss_Melee_Slash_RootMotion.fbx.meta
similarity index 97%
rename from Assets/External_Used/Animations/Melee_Slash.fbx.meta
rename to Assets/External_Used/Animations/Boss_Melee_Slash_RootMotion.fbx.meta
index faf74fc2..f76a5c92 100644
--- a/Assets/External_Used/Animations/Melee_Slash.fbx.meta
+++ b/Assets/External_Used/Animations/Boss_Melee_Slash_RootMotion.fbx.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 079bd00af1b92964d8973dcbf2dcd21f
+guid: 4005a77aa7d531742b1de1bec27001b1
ModelImporter:
serializedVersion: 24200
internalIDToNameTable: []
@@ -15,7 +15,7 @@ ModelImporter:
resampleCurves: 1
optimizeGameObjects: 0
removeConstantScaleCurves: 0
- motionNodeName:
+ motionNodeName: Root
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
@@ -31,7 +31,7 @@ ModelImporter:
extraUserProperties: []
clipAnimations:
- serializedVersion: 16
- name: A_Attack_LightCombo01A_Sword
+ name: A_Attack_LightCombo01A_RootMotion_Sword
takeName: A_Attack_Light01A
internalID: -7717634560727564301
firstFrame: 1
@@ -47,36 +47,22 @@ ModelImporter:
loopBlendOrientation: 1
loopBlendPositionY: 1
loopBlendPositionXZ: 1
- keepOriginalOrientation: 1
+ keepOriginalOrientation: 0
keepOriginalPositionY: 1
- keepOriginalPositionXZ: 1
+ keepOriginalPositionXZ: 0
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events:
- - time: 0.4590326
- functionName: OnEffect
- data:
- objectReferenceParameter: {instanceID: 0}
- floatParameter: 0
- intParameter: 1
- messageOptions: 0
- - time: 0.46052074
- functionName: OnEffect
- data:
- objectReferenceParameter: {instanceID: 0}
- floatParameter: 0
- intParameter: 2
- messageOptions: 0
- - time: 0.4627699
+ - time: 0.4984817
functionName: OnEffect
data:
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
- - time: 1
+ - time: 0.9981159
functionName: OnSkillEnd
data:
objectReferenceParameter: {instanceID: 0}
@@ -196,7 +182,7 @@ ModelImporter:
maskSource: {fileID: 31900000, guid: ebc8800d7aef22a4aa95591cd452157d, type: 2}
additiveReferencePoseFrame: 1
- serializedVersion: 16
- name: A_Attack_LightCombo01A_WindUp_Sword
+ name: A_Attack_LightCombo01A_WindUp_RootMotion_Sword
takeName: A_Attack_Light01A
internalID: -3664902444864169318
firstFrame: 1
@@ -209,12 +195,12 @@ ModelImporter:
hasAdditiveReferencePose: 0
loopTime: 0
loopBlend: 0
- loopBlendOrientation: 1
- loopBlendPositionY: 1
- loopBlendPositionXZ: 1
- keepOriginalOrientation: 1
+ loopBlendOrientation: 0
+ loopBlendPositionY: 0
+ loopBlendPositionXZ: 0
+ keepOriginalOrientation: 0
keepOriginalPositionY: 1
- keepOriginalPositionXZ: 1
+ keepOriginalPositionXZ: 0
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
@@ -333,7 +319,7 @@ ModelImporter:
maskSource: {fileID: 31900000, guid: ebc8800d7aef22a4aa95591cd452157d, type: 2}
additiveReferencePoseFrame: 1
- serializedVersion: 16
- name: A_Attack_LightCombo01A_Hit_Sword
+ name: A_Attack_LightCombo01A_Hit_RootMotion_Sword
takeName: A_Attack_Light01A
internalID: 5609185257447268413
firstFrame: 11
@@ -346,12 +332,12 @@ ModelImporter:
hasAdditiveReferencePose: 0
loopTime: 0
loopBlend: 0
- loopBlendOrientation: 1
- loopBlendPositionY: 1
- loopBlendPositionXZ: 1
- keepOriginalOrientation: 1
+ loopBlendOrientation: 0
+ loopBlendPositionY: 0
+ loopBlendPositionXZ: 0
+ keepOriginalOrientation: 0
keepOriginalPositionY: 1
- keepOriginalPositionXZ: 1
+ keepOriginalPositionXZ: 0
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
@@ -470,7 +456,7 @@ ModelImporter:
maskSource: {fileID: 31900000, guid: ebc8800d7aef22a4aa95591cd452157d, type: 2}
additiveReferencePoseFrame: 1
- serializedVersion: 16
- name: A_Attack_LightCombo01A_FollowThrough_Sword
+ name: A_Attack_LightCombo01A_FollowThrough_RootMotion_Sword
takeName: A_Attack_Light01A
internalID: -2249959126892459381
firstFrame: 15
@@ -483,12 +469,12 @@ ModelImporter:
hasAdditiveReferencePose: 0
loopTime: 0
loopBlend: 0
- loopBlendOrientation: 1
- loopBlendPositionY: 1
- loopBlendPositionXZ: 1
- keepOriginalOrientation: 1
+ loopBlendOrientation: 0
+ loopBlendPositionY: 0
+ loopBlendPositionXZ: 0
+ keepOriginalOrientation: 0
keepOriginalPositionY: 1
- keepOriginalPositionXZ: 1
+ keepOriginalPositionXZ: 0
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
diff --git a/Assets/External_Used/Animations/Melee_Slash.fbx b/Assets/External_Used/Animations/Melee_Slash.fbx
deleted file mode 100644
index c3bd3166..00000000
Binary files a/Assets/External_Used/Animations/Melee_Slash.fbx and /dev/null differ
diff --git a/Assets/External_Used/Animations/Melee_Slash_Return.fbx b/Assets/External_Used/Animations/Melee_Slash_Return.fbx
deleted file mode 100644
index 380df021..00000000
Binary files a/Assets/External_Used/Animations/Melee_Slash_Return.fbx and /dev/null differ
diff --git a/Assets/Prefabs/Bosses/Behavior Graph.asset b/Assets/Prefabs/Bosses/Behavior Graph.asset
index 79935b3a..5f132cbc 100644
--- a/Assets/Prefabs/Bosses/Behavior Graph.asset
+++ b/Assets/Prefabs/Bosses/Behavior Graph.asset
@@ -145,8 +145,8 @@ MonoBehaviour:
rid: 8805855836547055694
BlackboardGroupReferences: []
Root:
- rid: 8805855941168464690
- m_VersionTimestamp: 639092257330260006
+ rid: 8805855956374126792
+ m_VersionTimestamp: 639092810721857513
- rid: 8805855836547055694
type: {class: BlackboardReference, ns: Unity.Behavior, asm: Unity.Behavior}
data:
@@ -220,7 +220,119 @@ MonoBehaviour:
m_Value1: 14990413519379198129
Name: Die
m_Value: 0
- - rid: 8805855941168464690
+ - rid: 8805855956374126726
+ type: {class: 'BlackboardVariable`1[[Unity.Behavior.ConditionOperator, Unity.Behavior]]', ns: Unity.Behavior, asm: Unity.Behavior}
+ data:
+ GUID:
+ m_Value0: 0
+ m_Value1: 0
+ Name:
+ m_Value: 0
+ - rid: 8805855956374126727
+ type: {class: 'BlackboardVariable`1[[System.Boolean, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
+ data:
+ GUID:
+ m_Value0: 0
+ m_Value1: 0
+ Name:
+ m_Value: 1
+ - rid: 8805855956374126728
+ type: {class: 'BlackboardVariable`1[[System.String, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
+ data:
+ GUID:
+ m_Value0: 0
+ m_Value1: 0
+ Name:
+ m_Value: Player
+ - rid: 8805855956374126729
+ type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
+ data:
+ GUID:
+ m_Value0: 0
+ m_Value1: 0
+ Name:
+ m_Value: 10
+ - rid: 8805855956374126736
+ type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
+ data:
+ GUID:
+ m_Value0: 0
+ m_Value1: 0
+ Name:
+ m_Value: 1
+ - rid: 8805855956374126737
+ type: {class: 'BlackboardVariable`1[[Unity.Behavior.ConditionOperator, Unity.Behavior]]', ns: Unity.Behavior, asm: Unity.Behavior}
+ data:
+ GUID:
+ m_Value0: 0
+ m_Value1: 0
+ Name:
+ m_Value: 1
+ - rid: 8805855956374126738
+ type: {class: 'BlackboardVariable`1[[UnityEngine.GameObject, UnityEngine.CoreModule]]', ns: Unity.Behavior, asm: Unity.Behavior}
+ data:
+ GUID:
+ m_Value0: 0
+ m_Value1: 0
+ Name:
+ m_Value: {fileID: 0}
+ - rid: 8805855956374126745
+ type: {class: 'BlackboardVariable`1[[Unity.Behavior.ConditionOperator, Unity.Behavior]]', ns: Unity.Behavior, asm: Unity.Behavior}
+ data:
+ GUID:
+ m_Value0: 0
+ m_Value1: 0
+ Name:
+ m_Value: 5
+ - rid: 8805855956374126746
+ type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
+ data:
+ GUID:
+ m_Value0: 0
+ m_Value1: 0
+ Name:
+ m_Value: 10
+ - rid: 8805855956374126747
+ type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
+ data:
+ GUID:
+ m_Value0: 0
+ m_Value1: 0
+ Name:
+ m_Value: 5
+ - rid: 8805855956374126749
+ type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
+ data:
+ GUID:
+ m_Value0: 0
+ m_Value1: 0
+ Name:
+ m_Value: 10
+ - rid: 8805855956374126750
+ type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
+ data:
+ GUID:
+ m_Value0: 0
+ m_Value1: 0
+ Name:
+ m_Value: 5
+ - rid: 8805855956374126751
+ type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
+ data:
+ GUID:
+ m_Value0: 0
+ m_Value1: 0
+ Name:
+ m_Value: 0
+ - rid: 8805855956374126752
+ type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
+ data:
+ GUID:
+ m_Value0: 0
+ m_Value1: 0
+ Name:
+ m_Value: 2
+ - rid: 8805855956374126792
type: {class: Start, ns: Unity.Behavior, asm: Unity.Behavior}
data:
ID:
@@ -231,10 +343,10 @@ MonoBehaviour:
m_Parent:
rid: -2
m_Child:
- rid: 8805855941168464691
+ rid: 8805855956374126793
Repeat: 0
AllowMultipleRepeatsPerTick: 0
- - rid: 8805855941168464691
+ - rid: 8805855956374126793
type: {class: RepeaterModifier, ns: Unity.Behavior, asm: Unity.Behavior}
data:
ID:
@@ -243,11 +355,11 @@ MonoBehaviour:
Graph:
rid: 8805855836547055693
m_Parent:
- rid: 8805855941168464690
+ rid: 8805855956374126792
m_Child:
- rid: 8805855941168464692
+ rid: 8805855956374126794
m_AllowMultipleRepeatsPerTick: 0
- - rid: 8805855941168464692
+ - rid: 8805855956374126794
type: {class: BranchingConditionComposite, ns: Unity.Behavior, asm: Unity.Behavior}
data:
ID:
@@ -256,21 +368,21 @@ MonoBehaviour:
Graph:
rid: 8805855836547055693
m_Parent:
- rid: 8805855941168464691
+ rid: 8805855956374126793
m_Children:
- - rid: 8805855941168464693
+ - rid: 8805855956374126795
m_RegisteredObservers: []
m_Conditions:
- - rid: 8805855941168464694
+ - rid: 8805855956374126796
m_RequiresAllConditions: 0
True:
rid: -2
False:
- rid: 8805855941168464693
+ rid: 8805855956374126795
m_CurrentChild:
rid: -2
m_ObserverType: 0
- - rid: 8805855941168464693
+ - rid: 8805855956374126795
type: {class: SequenceComposite, ns: Unity.Behavior, asm: Unity.Behavior}
data:
ID:
@@ -279,12 +391,12 @@ MonoBehaviour:
Graph:
rid: 8805855836547055693
m_Parent:
- rid: 8805855941168464692
+ rid: 8805855956374126794
m_Children:
- - rid: 8805855941168464695
- - rid: 8805855941168464696
+ - rid: 8805855956374126797
+ - rid: 8805855956374126798
m_RegisteredObservers: []
- - rid: 8805855941168464694
+ - rid: 8805855956374126796
type: {class: VariableComparisonCondition, ns: Unity.Behavior, asm: Unity.Behavior}
data:
Graph:
@@ -292,10 +404,10 @@ MonoBehaviour:
Variable:
rid: 8805855941168464577
Operator:
- rid: 8805855941168464697
+ rid: 8805855956374126726
ComparisonValue:
- rid: 8805855941168464698
- - rid: 8805855941168464695
+ rid: 8805855956374126727
+ - rid: 8805855956374126797
type: {class: SetTargetInRangeAction, ns: , asm: Colosseum.Game}
data:
ID:
@@ -304,14 +416,14 @@ MonoBehaviour:
Graph:
rid: 8805855836547055693
m_Parent:
- rid: 8805855941168464693
+ rid: 8805855956374126795
Target:
rid: 8805855941168464573
Tag:
- rid: 8805855941168464699
+ rid: 8805855956374126728
Range:
- rid: 8805855941168464700
- - rid: 8805855941168464696
+ rid: 8805855956374126729
+ - rid: 8805855956374126798
type: {class: BranchingConditionComposite, ns: Unity.Behavior, asm: Unity.Behavior}
data:
ID:
@@ -320,54 +432,22 @@ MonoBehaviour:
Graph:
rid: 8805855836547055693
m_Parent:
- rid: 8805855941168464693
+ rid: 8805855956374126795
m_Children:
- - rid: 8805855941168464701
- - rid: 8805855941168464702
+ - rid: 8805855956374126799
+ - rid: 8805855956374126800
m_RegisteredObservers: []
m_Conditions:
- - rid: 8805855941168464703
+ - rid: 8805855956374126801
m_RequiresAllConditions: 0
True:
- rid: 8805855941168464701
+ rid: 8805855956374126799
False:
- rid: 8805855941168464702
+ rid: 8805855956374126800
m_CurrentChild:
rid: -2
m_ObserverType: 0
- - rid: 8805855941168464697
- type: {class: 'BlackboardVariable`1[[Unity.Behavior.ConditionOperator, Unity.Behavior]]', ns: Unity.Behavior, asm: Unity.Behavior}
- data:
- GUID:
- m_Value0: 0
- m_Value1: 0
- Name:
- m_Value: 0
- - rid: 8805855941168464698
- type: {class: 'BlackboardVariable`1[[System.Boolean, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
- data:
- GUID:
- m_Value0: 0
- m_Value1: 0
- Name:
- m_Value: 1
- - rid: 8805855941168464699
- type: {class: 'BlackboardVariable`1[[System.String, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
- data:
- GUID:
- m_Value0: 0
- m_Value1: 0
- Name:
- m_Value: Player
- - rid: 8805855941168464700
- type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
- data:
- GUID:
- m_Value0: 0
- m_Value1: 0
- Name:
- m_Value: 10
- - rid: 8805855941168464701
+ - rid: 8805855956374126799
type: {class: BranchingConditionComposite, ns: Unity.Behavior, asm: Unity.Behavior}
data:
ID:
@@ -376,22 +456,22 @@ MonoBehaviour:
Graph:
rid: 8805855836547055693
m_Parent:
- rid: 8805855941168464696
+ rid: 8805855956374126798
m_Children:
- - rid: 8805855941168464704
- - rid: 8805855941168464705
+ - rid: 8805855956374126802
+ - rid: 8805855956374126803
m_RegisteredObservers: []
m_Conditions:
- - rid: 8805855941168464706
+ - rid: 8805855956374126804
m_RequiresAllConditions: 0
True:
- rid: 8805855941168464704
+ rid: 8805855956374126802
False:
- rid: 8805855941168464705
+ rid: 8805855956374126803
m_CurrentChild:
rid: -2
m_ObserverType: 0
- - rid: 8805855941168464702
+ - rid: 8805855956374126800
type: {class: WaitAction, ns: , asm: Colosseum.Game}
data:
ID:
@@ -400,10 +480,10 @@ MonoBehaviour:
Graph:
rid: 8805855836547055693
m_Parent:
- rid: 8805855941168464696
+ rid: 8805855956374126798
Duration:
- rid: 8805855941168464707
- - rid: 8805855941168464703
+ rid: 8805855956374126736
+ - rid: 8805855956374126801
type: {class: VariableComparisonCondition, ns: Unity.Behavior, asm: Unity.Behavior}
data:
Graph:
@@ -411,10 +491,10 @@ MonoBehaviour:
Variable:
rid: 8805855941168464573
Operator:
- rid: 8805855941168464708
+ rid: 8805855956374126737
ComparisonValue:
- rid: 8805855941168464709
- - rid: 8805855941168464704
+ rid: 8805855956374126738
+ - rid: 8805855956374126802
type: {class: SequenceComposite, ns: Unity.Behavior, asm: Unity.Behavior}
data:
ID:
@@ -423,12 +503,12 @@ MonoBehaviour:
Graph:
rid: 8805855836547055693
m_Parent:
- rid: 8805855941168464701
+ rid: 8805855956374126799
m_Children:
- - rid: 8805855941168464710
- - rid: 8805855941168464711
+ - rid: 8805855956374126805
+ - rid: 8805855956374126806
m_RegisteredObservers: []
- - rid: 8805855941168464705
+ - rid: 8805855956374126803
type: {class: ParallelAllComposite, ns: Unity.Behavior, asm: Unity.Behavior}
data:
ID:
@@ -437,49 +517,25 @@ MonoBehaviour:
Graph:
rid: 8805855836547055693
m_Parent:
- rid: 8805855941168464701
+ rid: 8805855956374126799
m_Children:
- - rid: 8805855941168464712
- - rid: 8805855941168464713
+ - rid: 8805855956374126807
+ - rid: 8805855956374126808
m_RegisteredObservers: []
- - rid: 8805855941168464706
+ - rid: 8805855956374126804
type: {class: CheckDistanceCondition, ns: Unity.Behavior, asm: Unity.Behavior}
data:
Graph:
rid: 8805855836547055693
Transform:
- rid: 8805855941168464714
+ rid: 8805855956374126809
Target:
- rid: 8805855941168464715
+ rid: 8805855956374126810
Operator:
- rid: 8805855941168464716
+ rid: 8805855956374126745
Threshold:
rid: 8805855941168464572
- - rid: 8805855941168464707
- type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
- data:
- GUID:
- m_Value0: 0
- m_Value1: 0
- Name:
- m_Value: 1
- - rid: 8805855941168464708
- type: {class: 'BlackboardVariable`1[[Unity.Behavior.ConditionOperator, Unity.Behavior]]', ns: Unity.Behavior, asm: Unity.Behavior}
- data:
- GUID:
- m_Value0: 0
- m_Value1: 0
- Name:
- m_Value: 1
- - rid: 8805855941168464709
- type: {class: 'BlackboardVariable`1[[UnityEngine.GameObject, UnityEngine.CoreModule]]', ns: Unity.Behavior, asm: Unity.Behavior}
- data:
- GUID:
- m_Value0: 0
- m_Value1: 0
- Name:
- m_Value: {fileID: 0}
- - rid: 8805855941168464710
+ - rid: 8805855956374126805
type: {class: RotateToTargetAction, ns: , asm: Colosseum.Game}
data:
ID:
@@ -488,26 +544,27 @@ MonoBehaviour:
Graph:
rid: 8805855836547055693
m_Parent:
- rid: 8805855941168464704
+ rid: 8805855956374126802
Target:
rid: 8805855941168464573
RotationSpeed:
- rid: 8805855941168464717
+ rid: 8805855956374126746
AngleThreshold:
- rid: 8805855941168464718
- - rid: 8805855941168464711
- type: {class: UseSkillAction, ns: , asm: Colosseum.Game}
+ rid: 8805855956374126747
+ - rid: 8805855956374126806
+ type: {class: SelectorComposite, ns: Unity.Behavior, asm: Unity.Behavior}
data:
ID:
- m_Value0: 4635061544341080751
- m_Value1: 17453988481007680603
+ m_Value0: 1213596326002826456
+ m_Value1: 9846416129968350328
Graph:
rid: 8805855836547055693
m_Parent:
- rid: 8805855941168464704
- "\uC2A4\uD0AC":
- rid: 8805855941168464576
- - rid: 8805855941168464712
+ rid: 8805855956374126802
+ m_Children:
+ - rid: 8805855956374126811
+ m_RegisteredObservers: []
+ - rid: 8805855956374126807
type: {class: RotateToTargetAction, ns: , asm: Colosseum.Game}
data:
ID:
@@ -516,14 +573,14 @@ MonoBehaviour:
Graph:
rid: 8805855836547055693
m_Parent:
- rid: 8805855941168464705
+ rid: 8805855956374126803
Target:
rid: 8805855941168464573
RotationSpeed:
- rid: 8805855941168464719
+ rid: 8805855956374126749
AngleThreshold:
- rid: 8805855941168464720
- - rid: 8805855941168464713
+ rid: 8805855956374126750
+ - rid: 8805855956374126808
type: {class: ChaseTargetAction, ns: , asm: Colosseum.Game}
data:
ID:
@@ -532,14 +589,14 @@ MonoBehaviour:
Graph:
rid: 8805855836547055693
m_Parent:
- rid: 8805855941168464705
+ rid: 8805855956374126803
Target:
rid: 8805855941168464573
Speed:
- rid: 8805855941168464721
+ rid: 8805855956374126751
StopDistance:
- rid: 8805855941168464722
- - rid: 8805855941168464714
+ rid: 8805855956374126752
+ - rid: 8805855956374126809
type: {class: 'GameObjectToComponentBlackboardVariable`1[[UnityEngine.Transform, UnityEngine.CoreModule]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
@@ -549,7 +606,7 @@ MonoBehaviour:
m_Value: {fileID: 0}
m_LinkedVariable:
rid: 8805855941168464571
- - rid: 8805855941168464715
+ - rid: 8805855956374126810
type: {class: 'GameObjectToComponentBlackboardVariable`1[[UnityEngine.Transform, UnityEngine.CoreModule]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
@@ -559,62 +616,26 @@ MonoBehaviour:
m_Value: {fileID: 0}
m_LinkedVariable:
rid: 8805855941168464573
- - rid: 8805855941168464716
- type: {class: 'BlackboardVariable`1[[Unity.Behavior.ConditionOperator, Unity.Behavior]]', ns: Unity.Behavior, asm: Unity.Behavior}
+ - rid: 8805855956374126811
+ type: {class: UsePatternAction, ns: , asm: Colosseum.Game}
+ data:
+ ID:
+ m_Value0: 8803463902102802735
+ m_Value1: 11879507492776070900
+ Graph:
+ rid: 8805855836547055693
+ m_Parent:
+ rid: 8805855956374126806
+ Pattern:
+ rid: 8805855956374126812
+ - rid: 8805855956374126812
+ type: {class: 'BlackboardVariable`1[[Colosseum.AI.BossPatternData, Colosseum.Game]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
m_Value0: 0
m_Value1: 0
Name:
- m_Value: 5
- - rid: 8805855941168464717
- type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
- data:
- GUID:
- m_Value0: 0
- m_Value1: 0
- Name:
- m_Value: 10
- - rid: 8805855941168464718
- type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
- data:
- GUID:
- m_Value0: 0
- m_Value1: 0
- Name:
- m_Value: 5
- - rid: 8805855941168464719
- type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
- data:
- GUID:
- m_Value0: 0
- m_Value1: 0
- Name:
- m_Value: 10
- - rid: 8805855941168464720
- type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
- data:
- GUID:
- m_Value0: 0
- m_Value1: 0
- Name:
- m_Value: 5
- - rid: 8805855941168464721
- type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
- data:
- GUID:
- m_Value0: 0
- m_Value1: 0
- Name:
- m_Value: 0
- - rid: 8805855941168464722
- type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
- data:
- GUID:
- m_Value0: 0
- m_Value1: 0
- Name:
- m_Value: 2
+ m_Value: {fileID: 11400000, guid: 5efd8123be76bf844875d386d9d5f73d, type: 2}
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -643,12 +664,13 @@ MonoBehaviour:
- rid: 8805855841097089765
- rid: 8805855841097089766
- rid: 8805855846311395415
- - rid: 8805855846311395454
- rid: 8805855941168464148
- rid: 8805855941168464149
- rid: 8805855941168464150
- rid: 8805855941168464612
- m_VersionTimestamp: 639092257330260006
+ - rid: 8805855948962791632
+ - rid: 8805855956374126770
+ m_VersionTimestamp: 639092810721857513
m_SerializedVersion: 2
m_DebugInfo: {fileID: -6758363554468061369}
m_RuntimeGraph: {fileID: -3933356984444701103}
@@ -782,21 +804,6 @@ MonoBehaviour:
Variables: []
NamedChildren: []
IsPlaceholder: 0
- - Name: Use Skill
- Story: "[\uC2A4\uD0AC] \uC0AC\uC6A9"
- RuntimeTypeString: UseSkillAction, Colosseum.Game, Version=0.0.0.0, Culture=neutral,
- PublicKeyToken=null
- RuntimeTypeID:
- m_Value0: 12860304689956036473
- m_Value1: 13342401439750041301
- Variables:
- - Name: "\uC2A4\uD0AC"
- Type:
- m_SerializableType: Colosseum.Skills.SkillData, Colosseum.Game, Version=0.0.0.0,
- Culture=neutral, PublicKeyToken=null
- Tooltip:
- NamedChildren: []
- IsPlaceholder: 0
- Name: Repeat
Story:
RuntimeTypeString: Unity.Behavior.RepeaterModifier, Unity.Behavior, Version=0.0.0.0,
@@ -807,6 +814,31 @@ MonoBehaviour:
Variables: []
NamedChildren: []
IsPlaceholder: 0
+ - Name: Use Pattern
+ Story: "[Pattern] \uC2E4\uD589"
+ RuntimeTypeString: UsePatternAction, Colosseum.Game, Version=0.0.0.0, Culture=neutral,
+ PublicKeyToken=null
+ RuntimeTypeID:
+ m_Value0: 13305875091066958497
+ m_Value1: 15475974310776131785
+ Variables:
+ - Name: Pattern
+ Type:
+ m_SerializableType: Colosseum.AI.BossPatternData, Colosseum.Game, Version=0.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+ Tooltip:
+ NamedChildren: []
+ IsPlaceholder: 0
+ - Name: Try In Order
+ Story:
+ RuntimeTypeString: Unity.Behavior.SelectorComposite, Unity.Behavior, Version=0.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+ RuntimeTypeID:
+ m_Value0: 11477120919463386923
+ m_Value1: 7730102824742023565
+ Variables: []
+ NamedChildren: []
+ IsPlaceholder: 0
m_Blackboards: []
m_MainBlackboardAuthoringAsset: {fileID: -6591390698989283165}
m_CommandBuffer:
@@ -1756,7 +1788,7 @@ MonoBehaviour:
m_NodeModel:
rid: 8805855846311395415
m_Connections:
- - rid: 8805855846311395455
+ - rid: 8805855956374126771
- rid: 8805855846311395418
type: {class: BehaviorGraphNodeModel/FieldModel, ns: Unity.Behavior, asm: Unity.Behavior.Authoring}
data:
@@ -1824,73 +1856,6 @@ MonoBehaviour:
m_Value1: 0
Name:
m_Value: 5
- - rid: 8805855846311395454
- type: {class: ActionNodeModel, ns: Unity.Behavior, asm: Unity.Behavior.Authoring}
- data:
- Position: {x: 665.8387, y: 644.6723}
- ID:
- m_Value0: 4635061544341080751
- m_Value1: 17453988481007680603
- Parents: []
- PortModels:
- - rid: 8805855846311395455
- - rid: 8805855846311395456
- NodeType:
- m_SerializableType: UseSkillAction, Colosseum.Game, Version=0.0.0.0, Culture=neutral,
- PublicKeyToken=null
- NodeTypeID:
- m_Value0: 12860304689956036473
- m_Value1: 13342401439750041301
- m_FieldValues:
- - rid: 8805855846311395457
- - rid: 8805855846311395455
- type: {class: PortModel, ns: Unity.Behavior.GraphFramework, asm: Unity.Behavior.GraphFramework}
- data:
- m_Name: InputPort
- m_PortDataFlowType: 0
- m_IsFloating: 0
- m_NodeModel:
- rid: 8805855846311395454
- m_Connections:
- - rid: 8805855846311395417
- - rid: 8805855846311395456
- type: {class: PortModel, ns: Unity.Behavior.GraphFramework, asm: Unity.Behavior.GraphFramework}
- data:
- m_Name: OutputPort
- m_PortDataFlowType: 1
- m_IsFloating: 0
- m_NodeModel:
- rid: 8805855846311395454
- m_Connections: []
- - rid: 8805855846311395457
- type: {class: BehaviorGraphNodeModel/FieldModel, ns: Unity.Behavior, asm: Unity.Behavior.Authoring}
- data:
- FieldName: "\uC2A4\uD0AC"
- Type:
- m_SerializableType: Colosseum.Skills.SkillData, Colosseum.Game, Version=0.0.0.0,
- Culture=neutral, PublicKeyToken=null
- LocalValue:
- rid: 8805855846311395458
- LinkedVariable:
- rid: 8805855846311395476
- - rid: 8805855846311395458
- type: {class: 'BlackboardVariable`1[[Colosseum.Skills.SkillData, Colosseum.Game]]', ns: Unity.Behavior, asm: Unity.Behavior}
- data:
- GUID:
- m_Value0: 0
- m_Value1: 0
- Name:
- m_Value: {fileID: 0}
- - rid: 8805855846311395476
- type: {class: 'TypedVariableModel`1[[Colosseum.Skills.SkillData, Colosseum.Game]]', ns: Unity.Behavior.GraphFramework, asm: Unity.Behavior.GraphFramework}
- data:
- ID:
- m_Value0: 15894527964846533412
- m_Value1: 3771131609012049390
- Name: Default Attack Skill
- IsExposed: 1
- m_IsShared: 0
- m_Value: {fileID: 11400000, guid: b7f09e0e899c8fc4bb2cc9204cc6eb4a, type: 2}
- rid: 8805855941168464148
type: {class: FloatingPortNodeModel, ns: Unity.Behavior.GraphFramework, asm: Unity.Behavior.GraphFramework}
data:
@@ -2139,6 +2104,101 @@ MonoBehaviour:
rid: 8805855941168464612
m_Connections:
- rid: 8805855941168464155
+ - rid: 8805855948962791632
+ type: {class: ActionNodeModel, ns: Unity.Behavior, asm: Unity.Behavior.Authoring}
+ data:
+ Position: {x: 587.1919, y: 730.68475}
+ ID:
+ m_Value0: 8803463902102802735
+ m_Value1: 11879507492776070900
+ Parents: []
+ PortModels:
+ - rid: 8805855948962791633
+ - rid: 8805855948962791634
+ NodeType:
+ m_SerializableType: UsePatternAction, Colosseum.Game, Version=0.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+ NodeTypeID:
+ m_Value0: 13305875091066958497
+ m_Value1: 15475974310776131785
+ m_FieldValues:
+ - rid: 8805855948962791636
+ - rid: 8805855948962791633
+ type: {class: PortModel, ns: Unity.Behavior.GraphFramework, asm: Unity.Behavior.GraphFramework}
+ data:
+ m_Name: InputPort
+ m_PortDataFlowType: 0
+ m_IsFloating: 0
+ m_NodeModel:
+ rid: 8805855948962791632
+ m_Connections:
+ - rid: 8805855956374126772
+ - rid: 8805855948962791634
+ type: {class: PortModel, ns: Unity.Behavior.GraphFramework, asm: Unity.Behavior.GraphFramework}
+ data:
+ m_Name: OutputPort
+ m_PortDataFlowType: 1
+ m_IsFloating: 0
+ m_NodeModel:
+ rid: 8805855948962791632
+ m_Connections: []
+ - rid: 8805855948962791636
+ type: {class: BehaviorGraphNodeModel/FieldModel, ns: Unity.Behavior, asm: Unity.Behavior.Authoring}
+ data:
+ FieldName: Pattern
+ Type:
+ m_SerializableType: Colosseum.AI.BossPatternData, Colosseum.Game, Version=0.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+ LocalValue:
+ rid: 8805855948962791638
+ LinkedVariable:
+ rid: -2
+ - rid: 8805855948962791638
+ type: {class: 'BlackboardVariable`1[[Colosseum.AI.BossPatternData, Colosseum.Game]]', ns: Unity.Behavior, asm: Unity.Behavior}
+ data:
+ GUID:
+ m_Value0: 0
+ m_Value1: 0
+ Name:
+ m_Value: {fileID: 11400000, guid: 5efd8123be76bf844875d386d9d5f73d, type: 2}
+ - rid: 8805855956374126770
+ type: {class: CompositeNodeModel, ns: Unity.Behavior, asm: Unity.Behavior.Authoring}
+ data:
+ Position: {x: 666.3364, y: 639.8787}
+ ID:
+ m_Value0: 1213596326002826456
+ m_Value1: 9846416129968350328
+ Parents: []
+ PortModels:
+ - rid: 8805855956374126771
+ - rid: 8805855956374126772
+ NodeType:
+ m_SerializableType: Unity.Behavior.SelectorComposite, Unity.Behavior, Version=0.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+ NodeTypeID:
+ m_Value0: 11477120919463386923
+ m_Value1: 7730102824742023565
+ m_FieldValues: []
+ - rid: 8805855956374126771
+ type: {class: PortModel, ns: Unity.Behavior.GraphFramework, asm: Unity.Behavior.GraphFramework}
+ data:
+ m_Name: InputPort
+ m_PortDataFlowType: 0
+ m_IsFloating: 0
+ m_NodeModel:
+ rid: 8805855956374126770
+ m_Connections:
+ - rid: 8805855846311395417
+ - rid: 8805855956374126772
+ type: {class: PortModel, ns: Unity.Behavior.GraphFramework, asm: Unity.Behavior.GraphFramework}
+ data:
+ m_Name: OutputPort
+ m_PortDataFlowType: 1
+ m_IsFloating: 0
+ m_NodeModel:
+ rid: 8805855956374126770
+ m_Connections:
+ - rid: 8805855948962791633
--- !u!114 &6694785542709420471
MonoBehaviour:
m_ObjectHideFlags: 0
diff --git a/Assets/Prefabs/Bosses/P_TestBoss_우수2연타.asset b/Assets/Prefabs/Bosses/P_TestBoss_우수2연타.asset
new file mode 100644
index 00000000..2bbfe3c7
--- /dev/null
+++ b/Assets/Prefabs/Bosses/P_TestBoss_우수2연타.asset
@@ -0,0 +1,26 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 0ce956e0878565343974c31b8111c0c6, type: 3}
+ m_Name: "P_TestBoss_\uC6B0\uC2182\uC5F0\uD0C0"
+ m_EditorClassIdentifier: Colosseum.Game::Colosseum.AI.BossPatternData
+ patternName: "\uAE30\uBCF8 \uD328\uD134"
+ steps:
+ - Type: 0
+ Skill: {fileID: 11400000, guid: 4f40629d4d334434285e8fdec3714536, type: 2}
+ Duration: 0
+ - Type: 1
+ Skill: {fileID: 0}
+ Duration: 0.5
+ - Type: 0
+ Skill: {fileID: 11400000, guid: 4f40629d4d334434285e8fdec3714536, type: 2}
+ Duration: 0
+ cooldown: 5
diff --git a/Assets/Prefabs/Bosses/P_TestBoss_우수2연타.asset.meta b/Assets/Prefabs/Bosses/P_TestBoss_우수2연타.asset.meta
new file mode 100644
index 00000000..0934aed2
--- /dev/null
+++ b/Assets/Prefabs/Bosses/P_TestBoss_우수2연타.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5efd8123be76bf844875d386d9d5f73d
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Prefabs/Player/Player.prefab b/Assets/Prefabs/Player/Player.prefab
index 26019923..1f2a8be0 100644
--- a/Assets/Prefabs/Player/Player.prefab
+++ b/Assets/Prefabs/Player/Player.prefab
@@ -293,7 +293,7 @@ MonoBehaviour:
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Skills.SkillController
animator: {fileID: 3426985706796420257}
baseController: {fileID: 9100000, guid: db718381bb2992e469c76c64015e065b, type: 2}
- baseSkillClip: {fileID: -7717634560727564301, guid: 079bd00af1b92964d8973dcbf2dcd21f, type: 3}
+ baseSkillClip: {fileID: -7717634560727564301, guid: 0f6fd9302e489b94d96774e2713b1317, type: 3}
debugMode: 1
showAreaDebug: 1
debugDrawDuration: 1
diff --git a/Assets/Scenes/Test.unity b/Assets/Scenes/Test.unity
index b0a865cf..0f6596e8 100644
--- a/Assets/Scenes/Test.unity
+++ b/Assets/Scenes/Test.unity
@@ -2496,6 +2496,10 @@ PrefabInstance:
propertyPath: m_Layer
value: 6
objectReference: {fileID: 0}
+ - target: {fileID: 8818883032728065057, guid: 56986b707b0dc09439cb35ff2f87dcc9, type: 3}
+ propertyPath: baseSkillClip
+ value:
+ objectReference: {fileID: -7717634560727564301, guid: 4005a77aa7d531742b1de1bec27001b1, type: 3}
- target: {fileID: 8949738738676772673, guid: 56986b707b0dc09439cb35ff2f87dcc9, type: 3}
propertyPath: m_Layer
value: 6
diff --git a/Assets/Scripts/AI/BehaviorActions/Actions/UsePatternAction.cs b/Assets/Scripts/AI/BehaviorActions/Actions/UsePatternAction.cs
new file mode 100644
index 00000000..4aba9c16
--- /dev/null
+++ b/Assets/Scripts/AI/BehaviorActions/Actions/UsePatternAction.cs
@@ -0,0 +1,117 @@
+using System;
+using Colosseum.AI;
+using Colosseum.Skills;
+using Unity.Behavior;
+using Unity.Properties;
+using UnityEngine;
+using Action = Unity.Behavior.Action;
+
+///
+/// 보스 패턴을 실행하는 Behavior Tree Action.
+/// 패턴 내 스텝(스킬 또는 대기)을 순서대로 실행하며, 패턴 쿨타임을 관리합니다.
+///
+[Serializable, GeneratePropertyBag]
+[NodeDescription(name: "Use Pattern", story: "[Pattern] 실행", category: "Action", id: "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6")]
+public partial class UsePatternAction : Action
+{
+ [SerializeReference] public BlackboardVariable Pattern;
+
+ private SkillController skillController;
+ private int currentStepIndex;
+ private float waitEndTime;
+ private bool isWaiting;
+ private float lastUsedTime = float.MinValue;
+
+ protected override Status OnStart()
+ {
+ if (Pattern?.Value == null)
+ {
+ Debug.LogWarning("[UsePatternAction] 패턴이 null입니다.");
+ return Status.Failure;
+ }
+
+ if (Time.time - lastUsedTime < Pattern.Value.Cooldown)
+ {
+ return Status.Failure;
+ }
+
+ if (Pattern.Value.Steps.Count == 0)
+ {
+ return Status.Failure;
+ }
+
+ skillController = GameObject.GetComponent();
+ if (skillController == null)
+ {
+ Debug.LogWarning($"[UsePatternAction] SkillController를 찾을 수 없습니다: {GameObject.name}");
+ return Status.Failure;
+ }
+
+ currentStepIndex = 0;
+ isWaiting = false;
+ return ExecuteCurrentStep();
+ }
+
+ protected override Status OnUpdate()
+ {
+ if (skillController == null)
+ return Status.Failure;
+
+ if (isWaiting)
+ {
+ if (Time.time < waitEndTime)
+ return Status.Running;
+
+ isWaiting = false;
+ }
+ else
+ {
+ if (skillController.IsPlayingAnimation)
+ return Status.Running;
+
+ }
+
+ currentStepIndex++;
+
+ if (currentStepIndex >= Pattern.Value.Steps.Count)
+ {
+ lastUsedTime = Time.time;
+ return Status.Success;
+ }
+
+ return ExecuteCurrentStep();
+ }
+
+ protected override void OnEnd()
+ {
+ skillController = null;
+ }
+
+ private Status ExecuteCurrentStep()
+ {
+ PatternStep step = Pattern.Value.Steps[currentStepIndex];
+
+ if (step.Type == PatternStepType.Wait)
+ {
+ isWaiting = true;
+ waitEndTime = Time.time + step.Duration;
+ return Status.Running;
+ }
+
+ // PatternStepType.Skill
+ if (step.Skill == null)
+ {
+ Debug.LogWarning($"[UsePatternAction] 스킬이 null입니다. (index {currentStepIndex})");
+ return Status.Failure;
+ }
+
+ bool success = skillController.ExecuteSkill(step.Skill);
+ if (!success)
+ {
+ Debug.LogWarning($"[UsePatternAction] 스킬 실행 실패: {step.Skill.SkillName} (index {currentStepIndex})");
+ return Status.Failure;
+ }
+
+ return Status.Running;
+ }
+}
diff --git a/Assets/Scripts/AI/BehaviorActions/Actions/UsePatternAction.cs.meta b/Assets/Scripts/AI/BehaviorActions/Actions/UsePatternAction.cs.meta
new file mode 100644
index 00000000..d400eeab
--- /dev/null
+++ b/Assets/Scripts/AI/BehaviorActions/Actions/UsePatternAction.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: a696fff0581f7264d9491514e9aee277
\ No newline at end of file
diff --git a/Assets/Scripts/AI/BossPatternData.cs b/Assets/Scripts/AI/BossPatternData.cs
new file mode 100644
index 00000000..f016cb24
--- /dev/null
+++ b/Assets/Scripts/AI/BossPatternData.cs
@@ -0,0 +1,38 @@
+using UnityEngine;
+using System.Collections.Generic;
+using Colosseum.Skills;
+
+namespace Colosseum.AI
+{
+ public enum PatternStepType { Skill, Wait }
+
+ [System.Serializable]
+ public class PatternStep
+ {
+ public PatternStepType Type = PatternStepType.Skill;
+ public SkillData Skill;
+ [Min(0f)] public float Duration = 0.5f;
+ }
+
+ ///
+ /// 보스 패턴 데이터. 순서대로 실행할 스텝(스킬 또는 대기) 목록과 쿨타임을 정의합니다.
+ ///
+ [CreateAssetMenu(fileName = "NewBossPattern", menuName = "Colosseum/Boss Pattern")]
+ public class BossPatternData : ScriptableObject
+ {
+ [Header("패턴 정보")]
+ [SerializeField] private string patternName;
+
+ [Header("스텝 순서")]
+ [SerializeField] private List steps = new List();
+
+ [Header("쿨타임")]
+ [Min(0f)]
+ [Tooltip("패턴 완료 후 다시 사용 가능해지기까지의 시간")]
+ [SerializeField] private float cooldown = 5f;
+
+ public string PatternName => patternName;
+ public IReadOnlyList Steps => steps;
+ public float Cooldown => cooldown;
+ }
+}
diff --git a/Assets/Scripts/AI/BossPatternData.cs.meta b/Assets/Scripts/AI/BossPatternData.cs.meta
new file mode 100644
index 00000000..ec498962
--- /dev/null
+++ b/Assets/Scripts/AI/BossPatternData.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 0ce956e0878565343974c31b8111c0c6
\ No newline at end of file
diff --git a/Assets/Scripts/Colosseum.Game.asmdef b/Assets/Scripts/Colosseum.Game.asmdef
index fbda737e..cd30729f 100644
--- a/Assets/Scripts/Colosseum.Game.asmdef
+++ b/Assets/Scripts/Colosseum.Game.asmdef
@@ -8,7 +8,8 @@
"Unity.InputSystem",
"Unity.TextMeshPro",
"Unity.Behavior",
- "Unity.Behavior.SerializableGUID"
+ "Unity.Behavior.SerializableGUID",
+ "Unity.Collections"
],
"includePlatforms": [],
"excludePlatforms": [],
diff --git a/Assets/Skills/Melee_Slash_Boss.asset b/Assets/Skills/Melee_Slash_Boss.asset
index f511f491..a9f2acc0 100644
--- a/Assets/Skills/Melee_Slash_Boss.asset
+++ b/Assets/Skills/Melee_Slash_Boss.asset
@@ -15,8 +15,8 @@ MonoBehaviour:
skillName: "\uBCA0\uAE30"
description:
icon: {fileID: 0}
- skillClip: {fileID: -7717634560727564301, guid: 0f6fd9302e489b94d96774e2713b1317, type: 3}
- endClip: {fileID: -8265974341663887746, guid: fbcbf9c09792c924296ac6036e76f6dc, type: 3}
+ skillClip: {fileID: -7717634560727564301, guid: 4005a77aa7d531742b1de1bec27001b1, type: 3}
+ endClip: {fileID: -8265974341663887746, guid: d3e4690f866332b43b86ee7005291cd0, type: 3}
useRootMotion: 1
ignoreRootMotionY: 1
cooldown: 1