Project_WL/Assets/Script/Character/Projectile/Skill/Skill_TrapSetup.cs

61 lines
2.0 KiB
C#
Raw Permalink Normal View History

2025-01-18 23:21:18 +00:00
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;
2025-01-18 23:21:18 +00:00
public override void Set(ProjectileData _data)
{
2025-05-07 01:06:12 +00:00
if (_data.shooter.IsMainPC())
SkillCard.dic_button.Add(_data.m_SkillListTableData.n_SkillID, Boom);
2025-01-18 23:21:18 +00:00
TrapHitChecker.gameObject.SetActive(true);
TrapHitChecker.Get_Collider().enabled = false;
go_danger.SetActive(false);
ExplosionHitChecker.gameObject.SetActive(false);
_data.Action_OnHit = hitter => { Boom(); };
2025-01-18 23:21:18 +00:00
_data.eStartPos = eProjectileStartPos.ShooterCenter;
base.Set(_data);
Launch_Curved(transform.position, _data.shooter.Get_PositionFoward(m_distance), 1f, 2f, false,
2025-01-18 23:21:18 +00:00
() =>
{
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()
{
2025-05-07 01:06:12 +00:00
if (gameObject.activeInHierarchy &&
TrapHitChecker.Get_Collider().enabled &&
!ExplosionHitChecker.gameObject.activeInHierarchy)
{
StartCoroutine(Co_Update());
return true;
}
return false;
2025-01-18 23:21:18 +00:00
}
IEnumerator Co_Update()
{
SkillCard.dic_button.Remove(m_ProjecTileData.m_SkillListTableData.n_SkillID);
TrapHitChecker.gameObject.SetActive(false);
2025-01-18 23:21:18 +00:00
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);
}
}