public void InitDOT(GameObject user, GameObject victim, Ability ability) { Vector3 victimPos = new Vector3(victim.transform.position.x, victim.transform.position.y, 0); GameObject dot = GameObject.Instantiate(prefab, victimPos, Quaternion.identity) as GameObject; dot.name = prefab.name; dot.transform.parent = victim.transform; DOTDamage dotScript = dot.GetComponent <DOTDamage>(); Transform victimChild = victim.transform.FindChild(prefab.name); if (victimChild && victimChild != dot) { // if (victimChild.name == prefab.name) // dotScript.DestroyGameObject(victimChild.gameObject); } dotScript.User = user; dotScript.Victim = victim; dotScript.Duration = effectDuration; dotScript.Action(); temp = 0; Job.make(DOT(user, dotScript)); }
private IEnumerator DOT(GameObject user, DOTDamage dotScript) { durationTimer.Start(); while (durationTimer.IsRunning && durationTimer.Elapsed.TotalSeconds <= damageTickDuration) { yield return(null); } dotScript.Damage(effectDamage); temp += damageTickDuration; durationTimer.Stop(); durationTimer.Reset(); if (effectDuration > temp) { Job.make(DOT(user, dotScript)); } yield break; }