using System.Collections; using System.Collections.Generic; using UnityEngine; public class Skill_Hurricane : ProjectileBase { [Header("소용돌이 유지 시간")] public float lifeTime = 15f; [Header("소용돌이 데미지 범위")] public BoxCollider m_Collider; [Header("데미지 간격")] public float damageGap = 0.33f; [Header("소용돌이 이동속도")] public float movespeed = 1f; public ParticleSystem[] particleSystems; public override void Set(ProjectileData _data) { base.Set(_data); transform.position = _data.target.Get_position(); transform.eulerAngles = Vector3.zero; movespeed += IsStep(1) ? Get_AwakenData(1, 1) : 0f; _data.LifeTime = lifeTime + (IsStep(2) ? Get_AwakenData(2, 1) : 0f); for (int i = 0; i < particleSystems.Length; i++) { var main = particleSystems[i].main; main.loop = true; } StartCoroutine(Co_Update()); } IEnumerator Co_Update() { // 고유 스킬 개화 없음 //if (IsStep(3)) m_Collider.size = new Vector3(1.70440888f, 3.86459613f, 1.84529209f); //else m_Collider.size = new Vector3(1.37568462f, 3.86459613f, 1.46960735f); while (m_ProjecTileData.LifeTime > 0f) { m_Collider.enabled = true; yield return null; yield return null; m_Collider.enabled = false; yield return new WaitForSeconds(damageGap); m_ProjecTileData.LifeTime -= damageGap; } for (int i = 0; i < particleSystems.Length; i++) { var main = particleSystems[i].main; main.loop = false; } yield return new WaitForSeconds(1f); Off(true); } private void Update() { if (!DSUtil.CheckNull(m_ProjecTileData.target) && !m_ProjecTileData.target.IsDead()) { var targetpos = m_ProjecTileData.target.Get_position(); transform.position = Vector3.MoveTowards(transform.position, targetpos, Time.deltaTime * movespeed); // Create a new position with the y value you want Vector3 newPosition = transform.position; newPosition.y = 0.01f; // Set the y-value transform.position = newPosition; } else { m_ProjecTileData.target = Get_NearstEnemy(); if (DSUtil.CheckNull(m_ProjecTileData.target)) Off(true); } if (m_ProjecTileData.shooter.IsDead()) Off(); } }