diff --git a/Gameton-06/Assets/Gameton/Resources/Animation/TON.Black Cat Animation Controller.controller b/Gameton-06/Assets/Gameton/Resources/Animation/TON.Black Cat Animation Controller.controller index ea735da5..7e35217c 100644 --- a/Gameton-06/Assets/Gameton/Resources/Animation/TON.Black Cat Animation Controller.controller +++ b/Gameton-06/Assets/Gameton/Resources/Animation/TON.Black Cat Animation Controller.controller @@ -1,5 +1,27 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1107 &-9077249474055646643 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Dead State + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 6044773153840634837} + m_Position: {x: 340, y: 60, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 6044773153840634837} --- !u!1102 &-8486694295061838376 AnimatorState: serializedVersion: 6 @@ -43,7 +65,11 @@ AnimatorStateMachine: - serializedVersion: 1 m_StateMachine: {fileID: -5086533985266875271} m_Position: {x: 370, y: 220, z: 0} - m_AnyStateTransitions: [] + - serializedVersion: 1 + m_StateMachine: {fileID: -9077249474055646643} + m_Position: {x: 360, y: 20, z: 0} + m_AnyStateTransitions: + - {fileID: -5224337707955684621} m_EntryTransitions: - {fileID: -309797680620189463} m_StateMachineTransitions: {} @@ -80,6 +106,31 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: +--- !u!1101 &-5224337707955684621 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: Dead Trigger + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 6044773153840634837} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.75 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 --- !u!1107 &-5086533985266875271 AnimatorStateMachine: serializedVersion: 6 @@ -92,6 +143,9 @@ AnimatorStateMachine: - serializedVersion: 1 m_State: {fileID: -693367234456754354} m_Position: {x: 370, y: 120, z: 0} + - serializedVersion: 1 + m_State: {fileID: 4521152736789440262} + m_Position: {x: 450, y: 210, z: 0} m_ChildStateMachines: [] m_AnyStateTransitions: [] m_EntryTransitions: [] @@ -174,6 +228,18 @@ AnimatorStateTransition: m_InterruptionSource: 0 m_OrderedInterruption: 1 m_CanTransitionToSelf: 1 +--- !u!114 &-1198824080363282594 +MonoBehaviour: + m_ObjectHideFlags: 1 + 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: 74387cf4b85c95e4faa62256886c64d9, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1102 &-693367234456754354 AnimatorState: serializedVersion: 6 @@ -236,6 +302,18 @@ AnimatorController: m_DefaultInt: 0 m_DefaultBool: 1 m_Controller: {fileID: 9100000} + - m_Name: Dead Trigger + m_Type: 9 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Hit Trigger + m_Type: 9 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} m_AnimatorLayers: - serializedVersion: 5 m_Name: Base Layer @@ -289,3 +367,102 @@ AnimatorTransition: m_Mute: 0 m_IsExit: 0 serializedVersion: 1 +--- !u!1101 &3671405725986199302 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 0} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 1 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.75 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1102 &4521152736789440262 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Skill Attack + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 3671405725986199302} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 8430766079991684248, guid: cf1b986646b388c44be6701f1d4e2aa9, type: 3} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &6044773153840634837 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Dead + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 6812893099851778904} + m_StateMachineBehaviours: + - {fileID: -1198824080363282594} + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 2329023500796642772, guid: 18ea9dc65f875244da367e162558c852, type: 3} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1101 &6812893099851778904 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 0} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 1 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.6875 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 diff --git a/Gameton-06/Assets/Gameton/Resources/Animation/TON.White Cat Animation Controller.controller b/Gameton-06/Assets/Gameton/Resources/Animation/TON.White Cat Animation Controller.controller index 13471e02..a9c62996 100644 --- a/Gameton-06/Assets/Gameton/Resources/Animation/TON.White Cat Animation Controller.controller +++ b/Gameton-06/Assets/Gameton/Resources/Animation/TON.White Cat Animation Controller.controller @@ -49,6 +49,28 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: +--- !u!1101 &-8402833176156813762 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 0} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 1 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.6875 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 --- !u!1107 &-8374698207545167250 AnimatorStateMachine: serializedVersion: 6 @@ -65,7 +87,11 @@ AnimatorStateMachine: - serializedVersion: 1 m_StateMachine: {fileID: -3582925031321173947} m_Position: {x: 350, y: 240, z: 0} - m_AnyStateTransitions: [] + - serializedVersion: 1 + m_StateMachine: {fileID: -4377896349108111501} + m_Position: {x: 380, y: 20, z: 0} + m_AnyStateTransitions: + - {fileID: 8566050554083356950} m_EntryTransitions: - {fileID: -309797680620189463} m_StateMachineTransitions: {} @@ -102,6 +128,68 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: +--- !u!1102 &-6018496262334504608 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Dead + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: -8402833176156813762} + m_StateMachineBehaviours: + - {fileID: -4024099522096655756} + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7846135321654629071, guid: e13fc322ef0ed6d4592b0085bd5771ee, type: 3} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1107 &-4377896349108111501 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Dead State + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: -6018496262334504608} + m_Position: {x: 330, y: 60, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 730, y: 110, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: -6018496262334504608} +--- !u!114 &-4024099522096655756 +MonoBehaviour: + m_ObjectHideFlags: 1 + 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: 74387cf4b85c95e4faa62256886c64d9, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1107 &-3582925031321173947 AnimatorStateMachine: serializedVersion: 6 @@ -114,6 +202,9 @@ AnimatorStateMachine: - serializedVersion: 1 m_State: {fileID: 3756675701075027738} m_Position: {x: 350, y: 120, z: 0} + - serializedVersion: 1 + m_State: {fileID: -1129636382595947497} + m_Position: {x: 420, y: 200, z: 0} m_ChildStateMachines: [] m_AnyStateTransitions: [] m_EntryTransitions: [] @@ -174,6 +265,33 @@ AnimatorStateTransition: m_InterruptionSource: 0 m_OrderedInterruption: 1 m_CanTransitionToSelf: 1 +--- !u!1102 &-1129636382595947497 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Skill Attack + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 1683219826370501469} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 3710427687745599305, guid: 2a760b1f58236ab46a68fb114edcd11b, type: 3} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: --- !u!1109 &-309797680620189463 AnimatorTransition: m_ObjectHideFlags: 1 @@ -209,6 +327,18 @@ AnimatorController: m_DefaultInt: 0 m_DefaultBool: 0 m_Controller: {fileID: 9100000} + - m_Name: Dead Trigger + m_Type: 9 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Hit Trigger + m_Type: 9 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} m_AnimatorLayers: - serializedVersion: 5 m_Name: Base Layer @@ -248,6 +378,28 @@ AnimatorStateMachine: m_ExitPosition: {x: 840, y: 110, z: 0} m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} m_DefaultState: {fileID: -8309299064988908239} +--- !u!1101 &1683219826370501469 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 0} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 1 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.5833334 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 --- !u!1109 &2750058937236111561 AnimatorTransition: m_ObjectHideFlags: 1 @@ -289,3 +441,28 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: +--- !u!1101 &8566050554083356950 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: Dead Trigger + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -6018496262334504608} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.75 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/CharacterBase.cs b/Gameton-06/Assets/Gameton/Scripts/Character/CharacterBase.cs index feddd9c8..c8dbdf86 100644 --- a/Gameton-06/Assets/Gameton/Scripts/Character/CharacterBase.cs +++ b/Gameton-06/Assets/Gameton/Scripts/Character/CharacterBase.cs @@ -4,9 +4,15 @@ using UnityEngine; namespace TON { - public class CharacterBase : MonoBehaviour + public class CharacterBase : MonoBehaviour, IDamage { + + public float currentHP; + public float maxHP; + public float currentSP; + public float maxSP; + public float speed; public float jumpForce = 5f; // 점프 힘 private bool isGrounded = true; // 플레이어가 바닥에 있는지 여부를 판단 @@ -22,10 +28,22 @@ namespace TON animator = GetComponent(); joystick = ControllerUI.Instance.joystick; ControllerUI.Instance.linkedCharactor = this; + + Initialize(); + } + + public void Initialize() + { + int playerIndex = PlayerPrefs.GetInt("SelectedPlayerIndex", 0); + PlayerData playerData = PlayerDataManager.Singleton.players[playerIndex]; + + currentHP = maxHP = playerData.hp; + currentSP = maxSP = playerData.mp; } public void FixedUpdate() { + // 키보드 입력과 조이스틱 입력 통합 float horizontalInput = Input.GetAxis("Horizontal"); // 키보드 좌우 입력 if (joystick != null && Mathf.Abs(joystick.Horizontal) > 0.01f) @@ -84,7 +102,32 @@ namespace TON } + public void ApplyDamage(float damage) + { + float prevHP = currentHP; + currentHP -= damage; + currentHP = Mathf.Clamp(currentHP, 0, maxHP); + // 체력이 0 아래로 떨어지고 현 상태가 IsAlive 일때만 동작하도록 함 + if (currentHP <= 0f && prevHP > 0) + { + animator.SetTrigger("Dead Trigger"); + } + // 체력이 0 보다 클때만 피격 모션 실행 + if (currentHP > 0) + { + if (damage < 10) + { + animator.SetTrigger("Hit Trigger"); + } + } + } + + public void Dead() + { + gameObject.SetActive(false); + + } } } diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/StateMachine.meta b/Gameton-06/Assets/Gameton/Scripts/Character/StateMachine.meta new file mode 100644 index 00000000..8a09660f --- /dev/null +++ b/Gameton-06/Assets/Gameton/Scripts/Character/StateMachine.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 42c0652b7cdf76049b8139ee302273b1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/StateMachine/DeadStateMachine.cs b/Gameton-06/Assets/Gameton/Scripts/Character/StateMachine/DeadStateMachine.cs new file mode 100644 index 00000000..188109c1 --- /dev/null +++ b/Gameton-06/Assets/Gameton/Scripts/Character/StateMachine/DeadStateMachine.cs @@ -0,0 +1,22 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace TON +{ + public class DeadStateMachine : StateMachineBehaviour + { + public override void OnStateMachineEnter(Animator animator, int stateMachinePathHash) + { + base.OnStateMachineEnter(animator, stateMachinePathHash); + } + + public override void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) + { + if (animator.TryGetComponent(out CharacterBase character)) + { + character.Dead(); + } + } + } +} diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/StateMachine/DeadStateMachine.cs.meta b/Gameton-06/Assets/Gameton/Scripts/Character/StateMachine/DeadStateMachine.cs.meta new file mode 100644 index 00000000..5d975e3d --- /dev/null +++ b/Gameton-06/Assets/Gameton/Scripts/Character/StateMachine/DeadStateMachine.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 74387cf4b85c95e4faa62256886c64d9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: