using System.Collections; using System.Collections.Generic; using UnityEngine; public class Skill_Bead : ProjectileBase { public AudioClip m_Clip; public BoxCollider m_Collider; [Header("이동속도")] public float movespeed = 3f; Dictionary dic_HitActor = new Dictionary(); public override void Set(ProjectileData _data) { _data.eStartPos = eProjectileStartPos.ShooterCenter; base.Set(_data); dic_HitActor.Clear(); bool isStep2 = IsStep(2); _data.Action_OnHit = hitter => { if (isStep2) { if (!dic_HitActor.ContainsKey(hitter)) dic_HitActor.Add(hitter, true); else hitter.Stun(Get_AwakenData(2, 1), true); } }; if (IsStep(3)) act_returnDmg = dmg => { _data.shooter.Heal(dmg * Get_AwakenData(3, 1)); _data.shooter.Heal_MP(dmg * Get_AwakenData(3, 1)); }; StartCoroutine(Co_Bead()); } IEnumerator Co_Bead() { // 시작 위치 설정 var startPos = m_ProjectTileData.shooter.Get_Center_position(); var targetPos = startPos + transform.forward * 5f; // 앞으로 이동할 목표 위치 (5 단위) float duration = 2f; // 이동 시간 float elapsed = 0f; // 경과 시간 // y값 고정 targetPos.y = startPos.y; var speed = movespeed + (IsStep(1) ? movespeed * Get_AwakenData(1, 1) : 0f); m_Collider.enabled = true; // 앞으로 이동 while (elapsed < duration) { transform.position = Vector3.Lerp(startPos, targetPos, elapsed / duration); elapsed += Time.deltaTime * speed; yield return null; } transform.position = targetPos; yield return null; m_Collider.enabled = false; yield return null; m_Collider.enabled = true; yield return null; // 다시 원래 위치로 이동 elapsed = 0f; while (elapsed < duration) { transform.position = Vector3.Lerp(targetPos, startPos, elapsed / duration); elapsed += Time.deltaTime * speed; yield return null; } // 발사체 종료 Off(true); } }