private IEnumerator Seek(GameObject target) { CreepScript targetScript = target.GetComponent <CreepScript>(); while (target != null) { m_CreepMovement.ChangeTarget(target, true); bool targetIsAtAttackRange = m_CreepMovement.TargetIsAtAttackRange(); CreepScript.CREEP_STATE currentState = m_CreepScript.GetCurrentState(); #region Can Destroy ? if (currentState != CreepScript.CREEP_STATE.DESTROYING && targetIsAtAttackRange) { m_CreepScript.SwitchToDestroyState(); StartCoroutine("Destroy", targetScript); } else if (currentState != CreepScript.CREEP_STATE.SEEKING && !targetIsAtAttackRange) { m_CreepScript.SwitchToSeekState(); StopCoroutine("Destroy"); } #endregion yield return(null); } StopSeekAndDestroy(); }