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;
}