From b9a7d020271c6f899a3278fad7666cbbb6245e0c Mon Sep 17 00:00:00 2001 From: "aube.lee" Date: Sun, 9 Feb 2025 12:23:18 +0900 Subject: [PATCH] =?UTF-8?q?=EC=8A=A4=ED=82=AC=20=EC=BB=A8=ED=8A=B8?= =?UTF-8?q?=EB=A1=A4=EB=9F=AC=20=EB=B6=80=EB=B6=84=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Player/Character Skill/BubblePop.prefab | 6 +- .../Character Skill/Darknessball.prefab | 38 ++++-- .../Player/Character Skill/Earth Smash.prefab | 6 +- .../Character Skill/ElementalBurst.prefab | 25 ++++ .../Player/Character Skill/Fireball.prefab | 38 ++++-- .../Player/Character Skill/Iceball.prefab | 38 ++++-- .../Player/Character Skill/Leaf Cutter.prefab | 6 +- .../Character Skill/Leaf Shuriken.prefab | 6 +- .../dev_jinjoo/Edit_Ingame.unity | 4 + .../Scripts/Character/CharacterBase.cs | 26 ++-- .../Scripts/Character/Skill/BubblePop.cs | 11 -- .../Scripts/Character/Skill/BubblePop.cs.meta | 11 -- .../Scripts/Character/Skill/DarknessBall.cs | 11 -- .../Character/Skill/DarknessBall.cs.meta | 11 -- .../Scripts/Character/Skill/EarthSmash.cs | 11 -- .../Character/Skill/EarthSmash.cs.meta | 11 -- .../Scripts/Character/Skill/ElementalBurst.cs | 11 -- .../Character/Skill/ElementalBurst.cs.meta | 11 -- .../Scripts/Character/Skill/FireBall.cs | 12 -- .../Scripts/Character/Skill/FireBall.cs.meta | 11 -- .../Scripts/Character/Skill/IceBall.cs | 11 -- .../Scripts/Character/Skill/IceBall.cs.meta | 11 -- .../Scripts/Character/Skill/LeafCutter.cs | 11 -- .../Character/Skill/LeafCutter.cs.meta | 11 -- .../Scripts/Character/Skill/LeafShuriken.cs | 11 -- .../Character/Skill/LeafShuriken.cs.meta | 11 -- .../Scripts/Character/Skill/SkillBase.cs | 44 +++++-- .../Character/Skill/SkillDataManager.cs | 117 +++++++++++++++++- .../Gameton/Scripts/Common/BootStrapper.cs | 1 + .../Assets/Gameton/Scripts/UI/ControllerUI.cs | 32 ++--- .../Scripts/UI/ControllerUI_SkillButton.cs | 75 +++++------ 31 files changed, 323 insertions(+), 316 deletions(-) delete mode 100644 Gameton-06/Assets/Gameton/Scripts/Character/Skill/BubblePop.cs delete mode 100644 Gameton-06/Assets/Gameton/Scripts/Character/Skill/BubblePop.cs.meta delete mode 100644 Gameton-06/Assets/Gameton/Scripts/Character/Skill/DarknessBall.cs delete mode 100644 Gameton-06/Assets/Gameton/Scripts/Character/Skill/DarknessBall.cs.meta delete mode 100644 Gameton-06/Assets/Gameton/Scripts/Character/Skill/EarthSmash.cs delete mode 100644 Gameton-06/Assets/Gameton/Scripts/Character/Skill/EarthSmash.cs.meta delete mode 100644 Gameton-06/Assets/Gameton/Scripts/Character/Skill/ElementalBurst.cs delete mode 100644 Gameton-06/Assets/Gameton/Scripts/Character/Skill/ElementalBurst.cs.meta delete mode 100644 Gameton-06/Assets/Gameton/Scripts/Character/Skill/FireBall.cs delete mode 100644 Gameton-06/Assets/Gameton/Scripts/Character/Skill/FireBall.cs.meta delete mode 100644 Gameton-06/Assets/Gameton/Scripts/Character/Skill/IceBall.cs delete mode 100644 Gameton-06/Assets/Gameton/Scripts/Character/Skill/IceBall.cs.meta delete mode 100644 Gameton-06/Assets/Gameton/Scripts/Character/Skill/LeafCutter.cs delete mode 100644 Gameton-06/Assets/Gameton/Scripts/Character/Skill/LeafCutter.cs.meta delete mode 100644 Gameton-06/Assets/Gameton/Scripts/Character/Skill/LeafShuriken.cs delete mode 100644 Gameton-06/Assets/Gameton/Scripts/Character/Skill/LeafShuriken.cs.meta diff --git a/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/BubblePop.prefab b/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/BubblePop.prefab index 80834796..70df0ff8 100644 --- a/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/BubblePop.prefab +++ b/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/BubblePop.prefab @@ -13,7 +13,7 @@ GameObject: - component: {fileID: 9038613328287168246} - component: {fileID: 3669420560598532132} - component: {fileID: 320122261167411594} - - component: {fileID: 8378046191530183079} + - component: {fileID: 6767522583486039941} m_Layer: 0 m_Name: BubblePop m_TagString: Untagged @@ -171,7 +171,7 @@ Rigidbody2D: m_SleepingMode: 1 m_CollisionDetection: 0 m_Constraints: 4 ---- !u!114 &8378046191530183079 +--- !u!114 &6767522583486039941 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -180,7 +180,7 @@ MonoBehaviour: m_GameObject: {fileID: 2348644397580482668} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 097cc9f5338c42f4dacb309030086af2, type: 3} + m_Script: {fileID: 11500000, guid: 9407c2d7c54dec74eac0fe37da48ef1d, type: 3} m_Name: m_EditorClassIdentifier: playerData: diff --git a/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/Darknessball.prefab b/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/Darknessball.prefab index e7066216..44e76793 100644 --- a/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/Darknessball.prefab +++ b/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/Darknessball.prefab @@ -11,9 +11,9 @@ GameObject: - component: {fileID: 759552675758406580} - component: {fileID: 7492690471538067993} - component: {fileID: 721481636574888361} - - component: {fileID: -3275633907703003897} - component: {fileID: 9113494596136640624} - component: {fileID: -7794782427701892011} + - component: {fileID: 6756012842473655295} m_Layer: 0 m_Name: Darknessball m_TagString: Untagged @@ -109,18 +109,6 @@ Animator: m_AllowConstantClipSamplingOptimization: 1 m_KeepAnimatorStateOnDisable: 0 m_WriteDefaultValuesOnDisable: 0 ---- !u!114 &-3275633907703003897 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 589444956133359262} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 46951a2e33fdd5a409f1579de9b7acfa, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!50 &9113494596136640624 Rigidbody2D: serializedVersion: 4 @@ -183,3 +171,27 @@ CapsuleCollider2D: m_Offset: {x: 0, y: 0} m_Size: {x: 0.33, y: 0.32} m_Direction: 1 +--- !u!114 &6756012842473655295 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 589444956133359262} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9407c2d7c54dec74eac0fe37da48ef1d, type: 3} + m_Name: + m_EditorClassIdentifier: + playerData: + id: 0 + type: + name: + level: 0 + experience: 0 + hp: 0 + mp: 0 + attackPower: 0 + defensivePower: 0 + critical: 0 + destoryTime: 2 diff --git a/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/Earth Smash.prefab b/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/Earth Smash.prefab index 1fe75167..fc3ddfee 100644 --- a/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/Earth Smash.prefab +++ b/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/Earth Smash.prefab @@ -13,7 +13,7 @@ GameObject: - component: {fileID: 6178516325091986387} - component: {fileID: 3056202625502292237} - component: {fileID: 5208689614317904018} - - component: {fileID: 6962075032689792435} + - component: {fileID: 1854460126165076812} m_Layer: 0 m_Name: Earth Smash m_TagString: Untagged @@ -171,7 +171,7 @@ Animator: m_AllowConstantClipSamplingOptimization: 1 m_KeepAnimatorStateOnDisable: 0 m_WriteDefaultValuesOnDisable: 0 ---- !u!114 &6962075032689792435 +--- !u!114 &1854460126165076812 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -180,7 +180,7 @@ MonoBehaviour: m_GameObject: {fileID: 725522673186316604} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 58aa952974ab33d448446d7e947feb10, type: 3} + m_Script: {fileID: 11500000, guid: 9407c2d7c54dec74eac0fe37da48ef1d, type: 3} m_Name: m_EditorClassIdentifier: playerData: diff --git a/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/ElementalBurst.prefab b/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/ElementalBurst.prefab index 048626bb..d81d028c 100644 --- a/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/ElementalBurst.prefab +++ b/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/ElementalBurst.prefab @@ -13,6 +13,7 @@ GameObject: - component: {fileID: 1708996747545980439} - component: {fileID: 751188261029751302} - component: {fileID: 8761893032860631160} + - component: {fileID: 8639718758756888688} m_Layer: 0 m_Name: ElementalBurst m_TagString: Untagged @@ -170,3 +171,27 @@ CapsuleCollider2D: m_Offset: {x: 0, y: 0} m_Size: {x: 0.35, y: 0.11} m_Direction: 1 +--- !u!114 &8639718758756888688 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5823506627603727293} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9407c2d7c54dec74eac0fe37da48ef1d, type: 3} + m_Name: + m_EditorClassIdentifier: + playerData: + id: 0 + type: + name: + level: 0 + experience: 0 + hp: 0 + mp: 0 + attackPower: 0 + defensivePower: 0 + critical: 0 + destoryTime: 2 diff --git a/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/Fireball.prefab b/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/Fireball.prefab index d7f3caf4..45d56ae6 100644 --- a/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/Fireball.prefab +++ b/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/Fireball.prefab @@ -11,9 +11,9 @@ GameObject: - component: {fileID: 7275089485906890891} - component: {fileID: 4707210132887916293} - component: {fileID: 8358053220907271229} - - component: {fileID: -409206718854825505} - component: {fileID: 7592981806478228525} - component: {fileID: 7577941235322895627} + - component: {fileID: 7009580840987262329} m_Layer: 0 m_Name: Fireball m_TagString: Untagged @@ -109,18 +109,6 @@ Animator: m_AllowConstantClipSamplingOptimization: 1 m_KeepAnimatorStateOnDisable: 0 m_WriteDefaultValuesOnDisable: 0 ---- !u!114 &-409206718854825505 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6328494989662859589} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 26dd04ed34a3c4042bfbe12766af2d60, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!70 &7592981806478228525 CapsuleCollider2D: m_ObjectHideFlags: 0 @@ -183,3 +171,27 @@ Rigidbody2D: m_SleepingMode: 1 m_CollisionDetection: 0 m_Constraints: 4 +--- !u!114 &7009580840987262329 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6328494989662859589} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9407c2d7c54dec74eac0fe37da48ef1d, type: 3} + m_Name: + m_EditorClassIdentifier: + playerData: + id: 0 + type: + name: + level: 0 + experience: 0 + hp: 0 + mp: 0 + attackPower: 0 + defensivePower: 0 + critical: 0 + destoryTime: 2 diff --git a/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/Iceball.prefab b/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/Iceball.prefab index cf0ce98b..c7be54c8 100644 --- a/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/Iceball.prefab +++ b/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/Iceball.prefab @@ -11,9 +11,9 @@ GameObject: - component: {fileID: 6892128790266366542} - component: {fileID: 1317263097951514820} - component: {fileID: 3514874755737400832} - - component: {fileID: -3377048296267459566} - component: {fileID: 1179248653527079395} - component: {fileID: 4076849194862890134} + - component: {fileID: 8757402249180582990} m_Layer: 0 m_Name: Iceball m_TagString: Untagged @@ -109,18 +109,6 @@ Animator: m_AllowConstantClipSamplingOptimization: 1 m_KeepAnimatorStateOnDisable: 0 m_WriteDefaultValuesOnDisable: 0 ---- !u!114 &-3377048296267459566 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2209934716239183953} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: aa5541b68c81e2347960b5eeaf373bf4, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!70 &1179248653527079395 CapsuleCollider2D: m_ObjectHideFlags: 0 @@ -183,3 +171,27 @@ Rigidbody2D: m_SleepingMode: 1 m_CollisionDetection: 0 m_Constraints: 4 +--- !u!114 &8757402249180582990 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2209934716239183953} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9407c2d7c54dec74eac0fe37da48ef1d, type: 3} + m_Name: + m_EditorClassIdentifier: + playerData: + id: 0 + type: + name: + level: 0 + experience: 0 + hp: 0 + mp: 0 + attackPower: 0 + defensivePower: 0 + critical: 0 + destoryTime: 2 diff --git a/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/Leaf Cutter.prefab b/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/Leaf Cutter.prefab index 7f519869..ce7b63c2 100644 --- a/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/Leaf Cutter.prefab +++ b/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/Leaf Cutter.prefab @@ -13,7 +13,7 @@ GameObject: - component: {fileID: 3321478883644359179} - component: {fileID: 212275300155788510} - component: {fileID: 2922771234883919603} - - component: {fileID: 5559617156593048031} + - component: {fileID: 1538103544923951145} m_Layer: 0 m_Name: Leaf Cutter m_TagString: Untagged @@ -171,7 +171,7 @@ Rigidbody2D: m_SleepingMode: 1 m_CollisionDetection: 0 m_Constraints: 4 ---- !u!114 &5559617156593048031 +--- !u!114 &1538103544923951145 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -180,7 +180,7 @@ MonoBehaviour: m_GameObject: {fileID: 774765665418399614} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ecd1248961250a0459b097be2a5f840d, type: 3} + m_Script: {fileID: 11500000, guid: 9407c2d7c54dec74eac0fe37da48ef1d, type: 3} m_Name: m_EditorClassIdentifier: playerData: diff --git a/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/Leaf Shuriken.prefab b/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/Leaf Shuriken.prefab index c2146bc2..452ab49b 100644 --- a/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/Leaf Shuriken.prefab +++ b/Gameton-06/Assets/Gameton/Resources/Player/Character Skill/Leaf Shuriken.prefab @@ -13,7 +13,7 @@ GameObject: - component: {fileID: 3594168943760168462} - component: {fileID: 3898881956917593441} - component: {fileID: 3923960153182909598} - - component: {fileID: 5319750382995448671} + - component: {fileID: 8315617979406152983} m_Layer: 0 m_Name: Leaf Shuriken m_TagString: Untagged @@ -171,7 +171,7 @@ Rigidbody2D: m_SleepingMode: 1 m_CollisionDetection: 0 m_Constraints: 4 ---- !u!114 &5319750382995448671 +--- !u!114 &8315617979406152983 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -180,7 +180,7 @@ MonoBehaviour: m_GameObject: {fileID: 1380883064370067919} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 88908efcef71610458a84067666b485b, type: 3} + m_Script: {fileID: 11500000, guid: 9407c2d7c54dec74eac0fe37da48ef1d, type: 3} m_Name: m_EditorClassIdentifier: playerData: diff --git a/Gameton-06/Assets/Gameton/Scenes/Personal Scenes/dev_jinjoo/Edit_Ingame.unity b/Gameton-06/Assets/Gameton/Scenes/Personal Scenes/dev_jinjoo/Edit_Ingame.unity index 3be9115c..b5ed3093 100644 --- a/Gameton-06/Assets/Gameton/Scenes/Personal Scenes/dev_jinjoo/Edit_Ingame.unity +++ b/Gameton-06/Assets/Gameton/Scenes/Personal Scenes/dev_jinjoo/Edit_Ingame.unity @@ -737,6 +737,10 @@ PrefabInstance: propertyPath: m_Name value: TON.ObjectPoolSystem objectReference: {fileID: 0} + - target: {fileID: 6504236090121797777, guid: ab2e507b20e5dc844a1ea24b5619f656, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/CharacterBase.cs b/Gameton-06/Assets/Gameton/Scripts/Character/CharacterBase.cs index 17c8d007..4243c5ef 100644 --- a/Gameton-06/Assets/Gameton/Scripts/Character/CharacterBase.cs +++ b/Gameton-06/Assets/Gameton/Scripts/Character/CharacterBase.cs @@ -160,24 +160,20 @@ namespace TON attackCollider.EnableCollider(false); } - public void SkillAttack(string skillId) + public bool SkillAttack(string skillId) { - animator.Play("Skill Attack"); + // 스킬 매니저에서 스킬을 쏠 수 있는지 여부를 판단 + bool canExecute = SkillDataManager.Singleton.CanExecuteSkill(skillId); + if (canExecute) + { + // 스킬 애니메이터 실행 + animator.Play("Skill Attack"); - // 스킬 생성 - GameObject skill = ObjectPoolManager.Instance.GetEffect(skillId); + // 스킬 매니저에 스킬 발사 요청 + SkillDataManager.Singleton.ExecuteSkill(skillId, firePoint, lastDirection); + } - // skill.transform.SetParent(firePoint); - skill.transform.SetPositionAndRotation(firePoint.position, firePoint.rotation); - - // 🔥 스킬 방향 반전 - var bulletScale = skill.transform.localScale; - bulletScale.x = Mathf.Abs(bulletScale.x) * lastDirection; - skill.transform.localScale = bulletScale; - - // 스킬 이동 방향 설정 - Rigidbody2D skillRb = skill.GetComponent(); - skillRb.velocity = new Vector2(lastDirection * 5f, 0f); + return canExecute; } diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/BubblePop.cs b/Gameton-06/Assets/Gameton/Scripts/Character/Skill/BubblePop.cs deleted file mode 100644 index 245eb580..00000000 --- a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/BubblePop.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -namespace TON -{ - public class BubblePop : SkillBase - { - - } -} diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/BubblePop.cs.meta b/Gameton-06/Assets/Gameton/Scripts/Character/Skill/BubblePop.cs.meta deleted file mode 100644 index 0d0c7671..00000000 --- a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/BubblePop.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 097cc9f5338c42f4dacb309030086af2 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/DarknessBall.cs b/Gameton-06/Assets/Gameton/Scripts/Character/Skill/DarknessBall.cs deleted file mode 100644 index 114bd254..00000000 --- a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/DarknessBall.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -namespace TON -{ - public class DarknessBall : SkillBase - { - - } -} diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/DarknessBall.cs.meta b/Gameton-06/Assets/Gameton/Scripts/Character/Skill/DarknessBall.cs.meta deleted file mode 100644 index da5a5998..00000000 --- a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/DarknessBall.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 46951a2e33fdd5a409f1579de9b7acfa -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/EarthSmash.cs b/Gameton-06/Assets/Gameton/Scripts/Character/Skill/EarthSmash.cs deleted file mode 100644 index 74ed8b99..00000000 --- a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/EarthSmash.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -namespace TON -{ - public class EarthSmash : SkillBase - { - - } -} diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/EarthSmash.cs.meta b/Gameton-06/Assets/Gameton/Scripts/Character/Skill/EarthSmash.cs.meta deleted file mode 100644 index 8017cd0c..00000000 --- a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/EarthSmash.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 58aa952974ab33d448446d7e947feb10 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/ElementalBurst.cs b/Gameton-06/Assets/Gameton/Scripts/Character/Skill/ElementalBurst.cs deleted file mode 100644 index fb71b6b9..00000000 --- a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/ElementalBurst.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -namespace TON -{ - public class ElementalBurst : SkillBase - { - - } -} diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/ElementalBurst.cs.meta b/Gameton-06/Assets/Gameton/Scripts/Character/Skill/ElementalBurst.cs.meta deleted file mode 100644 index 30f547e0..00000000 --- a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/ElementalBurst.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 251310a05dd69154f930fc61ec1795c7 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/FireBall.cs b/Gameton-06/Assets/Gameton/Scripts/Character/Skill/FireBall.cs deleted file mode 100644 index 39626ccb..00000000 --- a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/FireBall.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -namespace TON -{ - public class FireBall : SkillBase - { - - } -} diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/FireBall.cs.meta b/Gameton-06/Assets/Gameton/Scripts/Character/Skill/FireBall.cs.meta deleted file mode 100644 index 8795f6d1..00000000 --- a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/FireBall.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 26dd04ed34a3c4042bfbe12766af2d60 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/IceBall.cs b/Gameton-06/Assets/Gameton/Scripts/Character/Skill/IceBall.cs deleted file mode 100644 index 568e173c..00000000 --- a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/IceBall.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -namespace TON -{ - public class IceBall : SkillBase - { - - } -} diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/IceBall.cs.meta b/Gameton-06/Assets/Gameton/Scripts/Character/Skill/IceBall.cs.meta deleted file mode 100644 index a5caf122..00000000 --- a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/IceBall.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: aa5541b68c81e2347960b5eeaf373bf4 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/LeafCutter.cs b/Gameton-06/Assets/Gameton/Scripts/Character/Skill/LeafCutter.cs deleted file mode 100644 index 2d99d4b3..00000000 --- a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/LeafCutter.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -namespace TON -{ - public class LeafCutter : SkillBase - { - - } -} diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/LeafCutter.cs.meta b/Gameton-06/Assets/Gameton/Scripts/Character/Skill/LeafCutter.cs.meta deleted file mode 100644 index 3352a72f..00000000 --- a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/LeafCutter.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: ecd1248961250a0459b097be2a5f840d -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/LeafShuriken.cs b/Gameton-06/Assets/Gameton/Scripts/Character/Skill/LeafShuriken.cs deleted file mode 100644 index 360e5900..00000000 --- a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/LeafShuriken.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -namespace TON -{ - public class LeafShuriken : SkillBase - { - - } -} diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/LeafShuriken.cs.meta b/Gameton-06/Assets/Gameton/Scripts/Character/Skill/LeafShuriken.cs.meta deleted file mode 100644 index bb8bffc5..00000000 --- a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/LeafShuriken.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 88908efcef71610458a84067666b485b -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/SkillBase.cs b/Gameton-06/Assets/Gameton/Scripts/Character/Skill/SkillBase.cs index 250f8b45..27ca73be 100644 --- a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/SkillBase.cs +++ b/Gameton-06/Assets/Gameton/Scripts/Character/Skill/SkillBase.cs @@ -5,7 +5,7 @@ using UnityEngine; namespace TON { [System.Serializable] - public abstract class SkillBase : PoolAble + public class SkillBase : PoolAble { public float SkillCoolDown => SkillData.coolDown; public float CurrentCoolDown { get; protected set; } @@ -15,7 +15,7 @@ namespace TON private DamageCalculator damageCalculator = new DamageCalculator(); - private float elapsedTime; // 경과 시간 저장 변수 + private float elapsedTime = 0f; // 경과 시간 저장 변수 public float destoryTime = 2f; @@ -27,19 +27,43 @@ namespace TON void OnEnable() { - elapsedTime = 0f; // 오브젝트가 활성화될 때 초기화 + elapsedTime = 0f; } + public void InvokeExcuteSkill() + { + InvokeRepeating(nameof(ExecuteSkill), 0f, 1f); // 즉시 실행 후 1초 간격 반복 + } + + void ExecuteSkill() + { + if (elapsedTime >= destoryTime) + { + CancelInvoke(nameof(ExecuteSkill)); // 반복 중지 + ReleaseObject(); + return; + } + + Debug.Log("SkillBase:: " + SkillData.name); + UpdateSkill(Time.deltaTime); + elapsedTime += 1.0f; + } + + void OnDisable() + { + CancelInvoke(nameof(ExecuteSkill)); // 오브젝트 비활성화 시 중지 + } + + void Update() { - UpdateSkill(Time.deltaTime); - elapsedTime += Time.deltaTime; // 경과 시간 누적 - // 2초가 지나면 오브젝트 풀에 반환 - if (elapsedTime >= destoryTime) - { - ReleaseObject(); - } + + } + + public void SetCurrentCoolDown() + { + CurrentCoolDown = SkillData.coolDown; // 쿨타임 시작 } public void UpdateSkill(float deltaTime) diff --git a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/SkillDataManager.cs b/Gameton-06/Assets/Gameton/Scripts/Character/Skill/SkillDataManager.cs index 1f5816b0..d5608a98 100644 --- a/Gameton-06/Assets/Gameton/Scripts/Character/Skill/SkillDataManager.cs +++ b/Gameton-06/Assets/Gameton/Scripts/Character/Skill/SkillDataManager.cs @@ -7,7 +7,7 @@ namespace TON public class SkillDataManager : SingletonBase { public List skillDatas { get; private set; } - public List skillBases { get; private set; } + public SerializableDictionary skillInstances { get; private set; } protected override void Awake() { @@ -22,12 +22,121 @@ namespace TON { skillDatas = new List(); } - // skillData를 skillBase로 치환 } - public SkillData GetSkillData(string skillId) + public void SetSkillInstances() { - return skillDatas.Find(v => v.id == skillId); + skillInstances = new SerializableDictionary(); + // skillData를 skillBase로 치환 + foreach (var skillData in skillDatas) + { + skillInstances.Add(skillData.id, InitSkillData(skillData)); + } + } + + + // 스킬 슬롯에 배치할 수 있는 스킬 수 리턴하는 메소드 + public int GetActiveSkillCount() + { + int characterLevel = PlayerDataManager.Singleton.player.level; + int availableSkillCount = 0; + + foreach (SkillData skill in skillDatas) + { + if (skill.requiredLevel <= characterLevel) + { + availableSkillCount++; + } + } + return availableSkillCount > 3 ? 3 : availableSkillCount; + } + + // 스킬 슬롯에 적용해야하는 스킬 리스트 리턴 + public List GetActiveSkillInstance() + { + List filteredSkills = new List(); + + foreach (SkillData skill in skillDatas) + { + if (skill.slotNumber == 1 || skill.slotNumber == 2 || skill.slotNumber == 3) + { + filteredSkills.Add(skillInstances.GetValueOrDefault(skill.id)); + } + } + return filteredSkills; + } + + // 스킬 쿨타임 설정하는 메소드 + public void SetCoolTime(string skillId) + { + if (skillInstances.TryGetValue(skillId, out SkillBase skillBase)) + { + skillBase.SetCurrentCoolDown(); + } + } + + // 스킬 쿨타임 업데이트 메소드 + public void UpdateSkillCoolDown(string skillId) + { + if (skillInstances.TryGetValue(skillId, out SkillBase skillBase)) + { + skillBase.UpdateSkill(Time.deltaTime); + } + } + + // 스킬을 실행할 수 있는지 확인 + public bool CanExecuteSkill(string skillId) + { + if (skillInstances.TryGetValue(skillId, out SkillBase skill)) + { + return skill.CurrentCoolDown <= 0; + } + else + { + return false; + } + } + + // 스킬의 쿨타임 및 파괴 로직 실행 메소드 + public void InvokeExcuteSkill(string skillId) + { + if (skillInstances.TryGetValue(skillId, out SkillBase skill)) + { + skill.InvokeExcuteSkill(); + } + } + + // 스킬 발사(생성) 메소드 추가 + public void ExecuteSkill(string skillId, Transform firePoint, float lastDirection) + { + // 스킬 생성 + GameObject skill = ObjectPoolManager.Instance.GetEffect(skillId); + + skill.transform.SetPositionAndRotation(firePoint.position, firePoint.rotation); + + // 🔥 스킬 방향 반전 + var bulletScale = skill.transform.localScale; + bulletScale.x = Mathf.Abs(bulletScale.x) * lastDirection; + skill.transform.localScale = bulletScale; + + // 스킬 이동 방향 설정 + Rigidbody2D skillRb = skill.GetComponent(); + skillRb.velocity = new Vector2(lastDirection * 5f, 0f); + + + InvokeExcuteSkill(skillId); + } + + private SkillBase InitSkillData(SkillData skillData) + { + SkillBase skill = gameObject.AddComponent(); + skill.Init(skillData); + return skill; + } + + public SkillBase GetSkillData(string skillId) + { + return skillInstances.GetValueOrDefault(skillId); } } } diff --git a/Gameton-06/Assets/Gameton/Scripts/Common/BootStrapper.cs b/Gameton-06/Assets/Gameton/Scripts/Common/BootStrapper.cs index 3ceb549b..cbdf10c9 100644 --- a/Gameton-06/Assets/Gameton/Scripts/Common/BootStrapper.cs +++ b/Gameton-06/Assets/Gameton/Scripts/Common/BootStrapper.cs @@ -48,6 +48,7 @@ namespace TON PlayerDataManager.Singleton.SetCurrentUserData(); // HeartDataManager.Singleton.(); List skillDatas = SkillDataManager.Singleton.skillDatas; + SkillDataManager.Singleton.SetSkillInstances(); // TODO : Custom Order After System Load // UIManager.Show(UIList.IngameUI); diff --git a/Gameton-06/Assets/Gameton/Scripts/UI/ControllerUI.cs b/Gameton-06/Assets/Gameton/Scripts/UI/ControllerUI.cs index 11514754..6c98e39c 100644 --- a/Gameton-06/Assets/Gameton/Scripts/UI/ControllerUI.cs +++ b/Gameton-06/Assets/Gameton/Scripts/UI/ControllerUI.cs @@ -19,30 +19,30 @@ namespace TON [SerializeField] private SerializableDictionary skillButtons; + private SerializableDictionary skillInstances; private List skillDatas; + private List skillBases; public void Initalize() { int characterLevel = PlayerDataManager.Singleton.player.level; - skillDatas = SkillDataManager.Singleton.skillDatas; + skillInstances = SkillDataManager.Singleton.skillInstances; - if (skillDatas != null) + // 내가 사용할 스킬은 스킬 매니저에서 가져오게 변경 + + if (skillInstances != null) { - // 사용 가능한 스킬 필터링 (캐릭터 레벨보다 필요 레벨이 낮거나 같은 것만) - List availableSkills = skillDatas - .Where(skill => skill.requiredLevel <= characterLevel) - .OrderBy(skill => skill.requiredLevel) // 필요 레벨이 낮은 순으로 정렬 - .Take(3) // 최대 3개 선택 - .ToList(); + int skillSlotCount = SkillDataManager.Singleton.GetActiveSkillCount(); + List skillList = SkillDataManager.Singleton.GetActiveSkillInstance(); // 버튼 설정 for (int i = 0; i < buttons.Length; i++) { - if (i < availableSkills.Count) + if (i < skillSlotCount) { buttons[i].interactable = true; // 사용 가능 - SkillData skillData = skillDatas.Find(skill => skill.slotNumber == i + 1); + SkillBase skillData = skillList.Find(skill => skill.SkillData.slotNumber == i + 1); skillButtons[i].Initalize(skillData); } else @@ -55,8 +55,6 @@ namespace TON { Debug.LogError("스킬 정보 로드 오류 발생"); } - - } public void OnClickJumpButton() @@ -71,10 +69,14 @@ namespace TON public void OnClickSkillButton(ControllerUI_SkillButton button) { - linkedCharactor.SkillAttack(button.skillId); - SkillData skillData = skillDatas.Find(skill => skill.id == button.skillId); - button.SetCoolTime(skillData.coolDown); + bool skillAttack = linkedCharactor.SkillAttack(button.skillBase.SkillData.id); + // skill Attack 이 true 일때 만 쿨타임 흘러가게끔 + if (skillAttack) + { + // SkillData skillData = skillDatas.Find(skill => skill.id == button.skillId); + button.SetCoolTime(); + } } } diff --git a/Gameton-06/Assets/Gameton/Scripts/UI/ControllerUI_SkillButton.cs b/Gameton-06/Assets/Gameton/Scripts/UI/ControllerUI_SkillButton.cs index bc7d2afa..85080a65 100644 --- a/Gameton-06/Assets/Gameton/Scripts/UI/ControllerUI_SkillButton.cs +++ b/Gameton-06/Assets/Gameton/Scripts/UI/ControllerUI_SkillButton.cs @@ -8,7 +8,6 @@ namespace TON { public class ControllerUI_SkillButton : MonoBehaviour { - [SerializeField] private TextMeshProUGUI coolTimeText; [SerializeField] private Image coolTimeDimd; [SerializeField] private GameObject skillIcon; @@ -17,61 +16,49 @@ namespace TON [SerializeField] private SerializableDictionary skillSprite = new SerializableDictionary(); - public string skillId; - - public float maxCooldown; + public float currentCoolDown; + public SkillBase skillBase; - - public void Initalize(SkillData skillData) + public void Initalize(SkillBase skillData) { - skillId = skillData.id; - maxCooldown = skillData.coolDown; - InitSkillData(skillData); + skillBase = skillData; skillIcon.SetActive(true); - skillIcon.GetComponent().sprite = skillSprite.GetValueOrDefault(skillData.id, null); + skillIcon.GetComponent().sprite = skillSprite.GetValueOrDefault(skillBase.SkillData.id, null); lockImage.SetActive(false); - } - public void SetCoolTime(float remain) + public void SetCoolTime() { - coolTimeText.gameObject.SetActive(remain > 0f); - coolTimeText.text = $"{Mathf.CeilToInt(remain)}s"; - coolTimeDimd.fillAmount = remain / maxCooldown; - - } - private SkillBase InitSkillData(SkillData skillData) - { - switch (skillData.id) + SkillDataManager.Singleton.SetCoolTime(skillBase.SkillData.id); + if (skillBase.CurrentCoolDown <= 0) { - case "K0001": - var fireBall = gameObject.AddComponent(); - fireBall.Init(skillData); - return fireBall; - case "K0002": - var iceBall = gameObject.AddComponent(); - iceBall.Init(skillData); - return iceBall; - case "K0003": - return null; - case "K0004": - return null; - case "K0005": - return null; - case "K0006": - return null; - case "K0007": - return null; - case "K0008": - return null; - default: - return null; + // 현재 스킬의 스킬 쿨다운 값을 설정 + skillBase.SetCurrentCoolDown(); + currentCoolDown = skillBase.CurrentCoolDown; + UpdateCooldownUI(); } } + private void UpdateCooldownUI() + { + coolTimeText.gameObject.SetActive(currentCoolDown > 0); // 남은 쿨타임이 있을 때만 표시 + coolTimeText.text = $"{Mathf.CeilToInt(currentCoolDown)}s"; // 정수 초단위 표시 + coolTimeDimd.fillAmount = currentCoolDown / skillBase.SkillData.coolDown; // 1 → 0 으로 감소 + } + + void Update() + { + if (currentCoolDown > 0) + { + SkillDataManager.Singleton.UpdateSkillCoolDown(skillBase.SkillData.id); // 남은 쿨타임 감소 + UpdateCooldownUI(); // UI 업데이트 + } + else + { + + } + } } - - }