PlayerControl.SpawnHunterMonster C# (CSharp) Method

SpawnHunterMonster() private method

private SpawnHunterMonster ( int time, float bottomFloor, float topFloor ) : IEnumerator
time int
bottomFloor float
topFloor float
return IEnumerator
    IEnumerator SpawnHunterMonster(int time, float bottomFloor, float topFloor)
    {
        // waits time seconds before spawning
        for (int i = 0; i < time; i++)
        {
            if (transform.position.y > bottomFloor && transform.position.y < topFloor)
                yield return new WaitForSeconds(1); // waits up to 'time' seconds
            else
                break;
        }

        // hunter spawning code
        if (transform.position.y > bottomFloor && transform.position.y < topFloor)
        {
            float xHunterPos = Random.Range(wallL.transform.position.x, wallR.transform.position.x);
            while (transform.position.x - 10 < xHunterPos && xHunterPos < transform.position.x + 10)
            {
                xHunterPos = Random.Range(wallL.transform.position.x, wallR.transform.position.x);
            }
            if (hunter == null) {
           		hunter = (GameObject)Instantiate(HunterMonster, new Vector2(
                    xHunterPos, transform.position.y + hunterYOffset),
                    Quaternion.identity);
            }
            else {
                hunter.transform.position = new Vector3(xHunterPos, transform.position.y + hunterYOffset, 0);
                hunter.SetActive(true);
            }

           // Hunter hunterScript = hunter.GetComponent<Hunter>();
            for (int i = 0; i < 60; i++)    // 'i' controlls the duration of the hunter existance
            {
                /*
                //despawn hunter if it passes you
                 if ((hunterScript.facingRight && hunter.transform.position.x > gameObject.transform.position.x) ||(
                 !hunterScript.facingRight && hunter.transform.position.x < gameObject.transform.position.x))
                 {
                     //wait 3 seconds before despawn
                     yield return new WaitForSeconds(6);
                     break;
                 }
                 */

                //check if player is on same floor
                if (transform.position.y > bottomFloor && transform.position.y < topFloor)
                {
                    yield return new WaitForSeconds(1);
                }
                else
                {
                    break;
                }
            }

            // goodbye hunter
            if (hunter != null) {
                hunter.SetActive(false);
            }
        }

        isHunterActive = false;
    }