diff --git a/Gameton-06/Assets/Gameton/Scenes/Stage 1.unity b/Gameton-06/Assets/Gameton/Scenes/Stage 1.unity index d7e948c6..6ea3200a 100644 --- a/Gameton-06/Assets/Gameton/Scenes/Stage 1.unity +++ b/Gameton-06/Assets/Gameton/Scenes/Stage 1.unity @@ -2458,6 +2458,96 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &690060895 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 690060897} + - component: {fileID: 690060896} + - component: {fileID: 690060898} + m_Layer: 0 + m_Name: Dead Zone + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!61 &690060896 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 690060895} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 1 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 90, y: 5} + m_EdgeRadius: 0 +--- !u!4 &690060897 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 690060895} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 47.76, y: -5.28, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &690060898 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 690060895} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 742e996d10bb93b4eab96a09af062282, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &718284630 GameObject: m_ObjectHideFlags: 0 @@ -58762,7 +58852,7 @@ Transform: m_GameObject: {fileID: 1185367601} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 26.522308, y: -128.69121, z: -10.076585} + m_LocalPosition: {x: -80.44, y: -38.899998, z: -10.076585} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -112945,6 +113035,7 @@ SceneRoots: - {fileID: 718284631} - {fileID: 2135657552} - {fileID: 2067632268} + - {fileID: 690060897} - {fileID: 535565209} - {fileID: 1423029865} - {fileID: 1441848035} diff --git a/Gameton-06/Assets/Gameton/Scenes/Stage 2.unity b/Gameton-06/Assets/Gameton/Scenes/Stage 2.unity index cd61c9da..2d3fca29 100644 --- a/Gameton-06/Assets/Gameton/Scenes/Stage 2.unity +++ b/Gameton-06/Assets/Gameton/Scenes/Stage 2.unity @@ -358744,6 +358744,96 @@ Tilemap: e31: 0 e32: 0 e33: 1 +--- !u!1 &1981947245 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1981947248} + - component: {fileID: 1981947247} + - component: {fileID: 1981947246} + m_Layer: 0 + m_Name: Dead Zone + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1981947246 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1981947245} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 742e996d10bb93b4eab96a09af062282, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!61 &1981947247 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1981947245} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 1 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 10, y: 5} + m_EdgeRadius: 0 +--- !u!4 &1981947248 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1981947245} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.73, y: -39.07, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1986734010 GameObject: m_ObjectHideFlags: 0 @@ -374444,7 +374534,8 @@ SceneRoots: - {fileID: 1068442246} - {fileID: 718284631} - {fileID: 2135657552} - - {fileID: 535565209} - {fileID: 2067632268} + - {fileID: 1981947248} + - {fileID: 535565209} - {fileID: 1355096343} - {fileID: 1487838324} diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/CharacterBase.cs b/Gameton-06/Assets/Gameton/Scripts/Character/CharacterBase.cs index b917e70d..2e63ea2c 100644 --- a/Gameton-06/Assets/Gameton/Scripts/Character/CharacterBase.cs +++ b/Gameton-06/Assets/Gameton/Scripts/Character/CharacterBase.cs @@ -35,6 +35,7 @@ namespace TON // ingame UI의 캐릭터 stat 적용을 위한 이벤트 public event System.Action OnHPChanged; public event System.Action OnSPChanged; + public event System.Action OnDeathCompleted; // 사망 애니메이션 종료 이벤트 public void Start() @@ -226,7 +227,7 @@ namespace TON // 체력이 0 아래로 떨어지고 현 상태가 IsAlive 일때만 동작하도록 함 if (currentHP <= 0f && prevHP > 0) { - animator.SetTrigger("Dead Trigger"); + Dead(); } // 체력이 0 보다 클때만 피격 모션 실행 @@ -241,8 +242,13 @@ namespace TON public void Dead() { - gameObject.SetActive(false); + animator.SetTrigger("Dead Trigger"); + } + public void DestroyDead() + { + gameObject.SetActive(false); + OnDeathCompleted?.Invoke(); // 사망 애니메이션 종료 시점에 이벤트 호출 } } } diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/StateMachine/DeadStateMachine.cs b/Gameton-06/Assets/Gameton/Scripts/Character/StateMachine/DeadStateMachine.cs index 188109c1..aa5b4a47 100644 --- a/Gameton-06/Assets/Gameton/Scripts/Character/StateMachine/DeadStateMachine.cs +++ b/Gameton-06/Assets/Gameton/Scripts/Character/StateMachine/DeadStateMachine.cs @@ -15,7 +15,7 @@ namespace TON { if (animator.TryGetComponent(out CharacterBase character)) { - character.Dead(); + character.DestroyDead(); } } } diff --git a/Gameton-06/Assets/Gameton/Scripts/GameStage/StageDeadZone.cs b/Gameton-06/Assets/Gameton/Scripts/GameStage/StageDeadZone.cs new file mode 100644 index 00000000..cbc311c1 --- /dev/null +++ b/Gameton-06/Assets/Gameton/Scripts/GameStage/StageDeadZone.cs @@ -0,0 +1,27 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace TON +{ + public class StageDeadZone : MonoBehaviour + { + private void OnTriggerEnter2D(Collider2D collision) + { + if (collision.CompareTag("Player")) + { + CharacterBase character = collision.gameObject.GetComponentInChildren(); + character.Dead(); + + character.OnDeathCompleted += ShowGameOverUI; // 이벤트 구독 + + } + } + + private void ShowGameOverUI() + { + UIManager.Show(UIList.GameOverUI); + } + + } +} diff --git a/Gameton-06/Assets/Gameton/Scripts/GameStage/StageDeadZone.cs.meta b/Gameton-06/Assets/Gameton/Scripts/GameStage/StageDeadZone.cs.meta new file mode 100644 index 00000000..9f4300f3 --- /dev/null +++ b/Gameton-06/Assets/Gameton/Scripts/GameStage/StageDeadZone.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 742e996d10bb93b4eab96a09af062282 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: