diff --git a/Assets/Script/Character/Mob/Boss/Boss_GolemChild.cs b/Assets/Script/Character/Mob/Boss/Boss_GolemChild.cs index 547b9ee73..ca59a9214 100644 --- a/Assets/Script/Character/Mob/Boss/Boss_GolemChild.cs +++ b/Assets/Script/Character/Mob/Boss/Boss_GolemChild.cs @@ -1,3 +1,4 @@ +using System; using System.Collections; using UnityEngine; @@ -21,24 +22,20 @@ public class Boss_GolemChild : BossMobActor [Header("스킬2 데미지")] public float Skill2Dmg = 3f; [Header("스킬2 인디케이터")] - public string Skill12ndicator = "Golem_Child_Skill2_Indicator"; + public string Skill2Indicator = "Golem_Child_Skill2_Indicator"; - Projectile_Curved pc_Lock; - ProjectileBase pb_LockExp, pb_Skill2; + ProjectileBase pb_Lock, pb_LockExp, pb_Skill2; - public override void Set(bool isEnemy, Actor owner, ServerData sdata, int _id, bool _stop, bool _ui = false) + public override void Set(MonsterTableData mobtable, Vector3 pos, Action actDie, int order) { - base.Set(isEnemy, owner, sdata, _id, _stop, _ui); + base.Set(mobtable, pos, actDie, order); - if (DSUtil.CheckNull(go_indicator1)) IndicatorInfo.Ins.Make_Indicator(Skill1Indicator, go => { go_indicator1 = go; }); - if (DSUtil.CheckNull(go_indicator2)) IndicatorInfo.Ins.Make_Indicator(Skill12ndicator, go => { go_indicator2 = go; }); + Load_Indicator(Skill1Indicator, 0); + Load_Indicator(Skill2Indicator, 1); - ProjectileInfo.Ins.Shoot_Projectile("FieldBoss/Golem_Child_Lock", this, m_Target, Skill1Dmg, tf_Skill1Pos.position, 10f, - pb => { pc_Lock = pb as Projectile_Curved; pc_Lock.gameObject.SetActive(false); }); - ProjectileInfo.Ins.Shoot_Projectile("FieldBoss/Golem_Child_LockExp", this, m_Target, Skill1AreaDmg, Vector3.zero, 10f, - pb => { pb_LockExp = pb; pb_LockExp.gameObject.SetActive(false); }); - ProjectileInfo.Ins.Shoot_Projectile("FieldBoss/Golem_Child_Skill2", this, m_Target, Skill2Dmg, Vector3.zero, 10f, - pb => { pb_Skill2 = pb; pb_Skill2.gameObject.SetActive(false); }); + Load_Projectile("FieldBoss/Golem_Child_Lock", Skill1Dmg, tf_Skill1Pos.position, 10f, pb_Lock, pb => pb_Lock = pb); + Load_Projectile("FieldBoss/Golem_Child_LockExp", Skill1AreaDmg, Vector3.zero, 10f, pb_LockExp, pb => pb_LockExp = pb); + Load_Projectile("FieldBoss/Golem_Child_Skill2", Skill2Dmg, Vector3.zero, 10f, pb_Skill2, pb => pb_Skill2 = pb); CoolTime_Skill1 = 1f; CoolTime_Skill2 = 2f; @@ -66,18 +63,18 @@ public class Boss_GolemChild : BossMobActor { Change_MobStatus(eMobStatus.Skill); AnimationPlay("boss_skill1"); - go_indicator1.SetActive(true); + list_indicator[0].SetActive(true); // 투척 지점(타겟 위치)에 인디케이터 생성, 타겟이 없으면 앞으로 5m var targetPos = isTarget ? m_Target.Get_position() : Get_PositionFoward(5f); - go_indicator1.transform.position = targetPos; - pc_Lock.transform.position = tf_Skill1Pos.position; - pc_Lock.gameObject.SetActive(true); + list_indicator[0].transform.position = targetPos; + pb_Lock.transform.position = tf_Skill1Pos.position; + pb_Lock.gameObject.SetActive(true); // 투척 지점 보여준 뒤 인디케이터 끄고 던짐 yield return new WaitForSeconds(1f); - go_indicator1.SetActive(false); - pc_Lock.Launch_Curved(tf_Skill1Pos.position, targetPos + Vector3.up, 1f, 7.5f, true, () => + list_indicator[0].SetActive(false); + (pb_Lock as Projectile_Curved).Launch_Curved(tf_Skill1Pos.position, targetPos + Vector3.up, 1f, 7.5f, true, () => { var pd = pb_LockExp.Get_ProjectTileData(); pd.LifeTime = 1f; @@ -95,14 +92,14 @@ public class Boss_GolemChild : BossMobActor AnimationPlay("boss_skill2"); InGameInfo.Ins.Show_Effect("Effect_GolemChildSkill2", this, eEffectLocation.Bottom, Skill2ChargingTime); - go_indicator2.SetActive(true); + list_indicator[1].SetActive(true); // 투척 지점(타겟 위치)에 인디케이터 생성, 타겟이 없으면 앞으로 5m var targetPos = isTarget ? m_Target.Get_position() : Get_PositionFoward(5f); - go_indicator2.transform.position = targetPos; + list_indicator[1].transform.position = targetPos; yield return new WaitForSeconds(Skill2ChargingTime); - go_indicator2.SetActive(false); + list_indicator[1].SetActive(false); var pd = pb_Skill2.Get_ProjectTileData(); pd.LifeTime = 1f; diff --git a/Assets/Script/Character/Mob/Boss/Boss_IceGolem.cs b/Assets/Script/Character/Mob/Boss/Boss_IceGolem.cs index 391fd5e5f..ee9051ef7 100644 --- a/Assets/Script/Character/Mob/Boss/Boss_IceGolem.cs +++ b/Assets/Script/Character/Mob/Boss/Boss_IceGolem.cs @@ -33,8 +33,8 @@ public class Boss_IceGolem : BossMobActor public override void Set(bool isEnemy, Actor owner, ServerData sdata, int _id, bool _stop, bool _ui = false) { base.Set(isEnemy, owner, sdata, _id, _stop, _ui); - if (DSUtil.CheckNull(go_indicator1)) IndicatorInfo.Ins.Make_Indicator(Skill1Indicator, go => { go_indicator1 = go; }); - if (DSUtil.CheckNull(go_indicator2)) IndicatorInfo.Ins.Make_Indicator(Skill2Indicator, go => { go_indicator2 = go; }); + Load_Indicator(Skill1Indicator, 0); + Load_Indicator(Skill2Indicator, 1); CoolTime_Skill1 = 1f; CoolTime_Skill2 = 2f; @@ -59,11 +59,11 @@ public class Boss_IceGolem : BossMobActor Run_byUseSkill(Skill1TargetRange, Skill1Speed, success => { AnimationPlay("boss_skill1start"); - go_indicator1.transform.position = Get_position(); - go_indicator1.SetActive(true); + list_indicator[0].transform.position = Get_position(); + list_indicator[0].SetActive(true); Jump(0.5f, 3f, 2f, 5f, () => { - go_indicator1.SetActive(false); + list_indicator[0].SetActive(false); Init(true, false); AnimationPlay("boss_skill1attack"); }); @@ -78,9 +78,9 @@ public class Boss_IceGolem : BossMobActor { Change_MobStatus(eMobStatus.Skill); AnimationPlay("boss_skill2start"); - go_indicator2.SetActive(true); - go_indicator2.transform.position = Get_position(); - if (isTarget) go_indicator2.transform.LookAt(m_Target.transform); + list_indicator[1].SetActive(true); + list_indicator[1].transform.position = Get_position(); + if (isTarget) list_indicator[1].transform.LookAt(m_Target.transform); float t = 0f; while (t < 3f) @@ -90,11 +90,11 @@ public class Boss_IceGolem : BossMobActor if (isTarget) { transform.LookAt(m_Target.transform); - go_indicator2.transform.LookAt(m_Target.transform); + list_indicator[1].transform.LookAt(m_Target.transform); } else break; } - go_indicator2.SetActive(false); + list_indicator[1].SetActive(false); if (isTarget) { diff --git a/Assets/Script/Character/Mob/BossMobActor.cs b/Assets/Script/Character/Mob/BossMobActor.cs index ce4f24223..4488507f8 100644 --- a/Assets/Script/Character/Mob/BossMobActor.cs +++ b/Assets/Script/Character/Mob/BossMobActor.cs @@ -1,11 +1,12 @@ using System; using System.Collections; +using System.Collections.Generic; using UnityEngine; using Random = UnityEngine.Random; public class BossMobActor : MobActor { - protected GameObject go_indicator1, go_indicator2; + protected List list_indicator = new List(); protected bool CanUseSkill1, CanUseSkill2; protected float CoolTime_PassiveSkill, CoolTime_Skill1, CoolTime_Skill2; protected int UseSkillIndex = 0; @@ -51,8 +52,8 @@ public class BossMobActor : MobActor } void InActiveAllIndicator() { - if (!DSUtil.CheckNull(go_indicator1)) go_indicator1.SetActive(false); - if (!DSUtil.CheckNull(go_indicator2)) go_indicator2.SetActive(false); + for (int i = 0; i < list_indicator.Count; i++) + list_indicator[i].SetActive(false); } public override void Del_Target(bool forcedel = false) @@ -129,6 +130,22 @@ public class BossMobActor : MobActor m_MonsterTableData.f_ProjectileLifeTime3, pb => { Set_Skill2Projectile(pb); }); } + protected void Load_Indicator(string prefab, int index) + { + if (list_indicator.Count <= index) + IndicatorInfo.Ins.Make_Indicator(prefab, go => { list_indicator.Add(go); go.SetActive(false); }); + else + list_indicator[index].SetActive(false); + } + protected void Load_Projectile(string prefab, float skilldmg, Vector3 pos, float lifetime, ProjectileBase _pb, Action act_pb) + { + if (DSUtil.CheckNull(_pb)) + ProjectileInfo.Ins.Shoot_Projectile(prefab, this, m_Target, skilldmg, pos, lifetime, + pb => { act_pb(pb); pb.gameObject.SetActive(false); }); + else + _pb.gameObject.SetActive(false); + } + protected void Run_byUseSkill(float range, float speed, Action moveend) { StartCoroutine(Co_Run_byUseSkill(range, speed, moveend)); diff --git a/Assets/Script/Character/Mob/MobActor.cs b/Assets/Script/Character/Mob/MobActor.cs index 69e8f6c72..a4a47eb2e 100644 --- a/Assets/Script/Character/Mob/MobActor.cs +++ b/Assets/Script/Character/Mob/MobActor.cs @@ -58,7 +58,7 @@ public class MobActor : Actor #endif Set_Warp(Get_position()); } - public void Set(MonsterTableData mobtable, Vector3 pos, Action actDie, int order) + public virtual void Set(MonsterTableData mobtable, Vector3 pos, Action actDie, int order) { m_Role = eRole.Mob; m_SubRole = mobtable.e_MonsterType;