public override void Launch() { StunStatus stun; Unit enemyUnit; foreach (RaycastHit hit in Physics.BoxCastAll(spellIndicator.transform.position, new Vector3(spellRange, 2f, 4f), Vector3.up)) { if (hit.collider.tag != this.tag && (enemyUnit = hit.collider.GetComponent <Unit>()) != null) { stun = new StunStatus(); stun.duration = stunDuration; stun.Init(enemyUnit); } } if (slowStatus != null) { slowStatus.OnStatusEnd(unit.GetComponent <Unit>()); slowStatus = null; } base.Launch(); Transform spellOrigin = unit.GetComponent <ControllableUnit>().spellOrigin; spellVisual = Instantiate(visualEffectRef, spellOrigin.position, spellOrigin.rotation); Invoke("Clean", 0.2f); }
public override void Clean() { Destroy(spellVisual); if (speedStatus != null) { } speedStatus.OnStatusEnd(unit.GetComponent <Unit>()); if (phaseStatus != null) { phaseStatus.OnStatusEnd(unit.GetComponent <Unit>()); unit.GetComponent <UnitStatusManager>().UnRegisterTimedStatus(phaseStatus); } Destroy(gameObject); }