// Start is called before the first frame update void Start() { if (_Instance == null) { _Instance = this.GetComponent <MonsterPoolManager>(); } else { Destroy(this.gameObject); } }
IEnumerator Hide() { boxCollider2D.enabled = false; followObject.Speed = 0; Explosion.SetActive(true); Sprite.gameObject.SetActive(false); GameManager.instance.DestroyedMonster(this); yield return(new WaitForSeconds(1f)); Explosion.SetActive(false); MonsterPoolManager.AddObject(this); gameObject.SetActive(false); }
IEnumerator GenerateNewMonsters() { while (true) { if (monstersOnScreen.Count <= maxCountMonstersOnScreen) { Vector3 newPosition = GetRandomPosiionOutsideCamera(); MonsterBehaviour monster = MonsterPoolManager.GetObject(); if (monster != null) { monster.transform.position = newPosition; monster.gameObject.SetActive(true); } else { MonsterBehaviour prefab = MonstersPrefabs[Random.Range(0, MonstersPrefabs.Count)]; monster = Instantiate(prefab, newPosition, new Quaternion(0, 0, 0, 0), this.transform); } monstersOnScreen.Add(monster); } yield return(new WaitForSeconds(Random.Range(MinDelayGeneration, MaxDelayGeneration))); } }