using System.Collections; using UnityEngine; public class Skill_TrapSetup : Projectile_Curved { public ProjectileHitChecker TrapHitChecker, ExplosionHitChecker; public GameObject go_danger; [Header("함정설치 거리")] public float m_distance = 5f; public override void Set(ProjectileData _data) { if (_data.shooter.IsMainPC()) SkillCard.dic_button.Add(_data.m_SkillListTableData.n_SkillID, Boom); TrapHitChecker.gameObject.SetActive(true); TrapHitChecker.Get_Collider().enabled = false; go_danger.SetActive(false); ExplosionHitChecker.gameObject.SetActive(false); _data.Action_OnHit = hitter => { Boom(); }; _data.eStartPos = eProjectileStartPos.ShooterCenter; base.Set(_data); Launch_Curved(transform.position, _data.shooter.Get_PositionFoward(m_distance), 1f, 2f, false, () => { TrapHitChecker.Get_Collider().enabled = true; go_danger.SetActive(true); }); StartCoroutine(Co_BoombyTime()); } IEnumerator Co_BoombyTime() { yield return new WaitForSeconds(m_ProjecTileData.LifeTime - 1f); Boom(); } bool Boom() { if (gameObject.activeInHierarchy && TrapHitChecker.Get_Collider().enabled && !ExplosionHitChecker.gameObject.activeInHierarchy) { StartCoroutine(Co_Update()); return true; } return false; } IEnumerator Co_Update() { SkillCard.dic_button.Remove(m_ProjecTileData.m_SkillListTableData.n_SkillID); TrapHitChecker.gameObject.SetActive(false); go_danger.SetActive(false); ExplosionHitChecker.Get_Collider().enabled = true; ExplosionHitChecker.gameObject.SetActive(true); yield return null; ExplosionHitChecker.Get_Collider().enabled = false; yield return new WaitForSeconds(1f); Off(true); } }