Esempio n. 1
0
    public void SpawnMonsters()
    {
        monsters = new List <GameObject>();
        int        numEnemies = Random.Range(3, 6);
        GameObject enemy      = tileset.monsters.RandomElement();

        for (int i = 0; i < numEnemies; i++)
        {
            GameObject mon = Instantiate(enemy);
            mon.transform.SetParent(transform);
            mon.transform.localPosition = new Vector3(Random.Range(-10, 10), Random.Range(-5, 5), -2);
            mon.GetComponent <DamageTaker>().OnHealthChanged.AddListener((int hp) =>
            {
                if (hp <= 0)
                {
                    monsters.Remove(mon);

                    if (monsters.Count == 0)
                    {
                        OnEnter.RemoveAllListeners();
                        OpenDoors();
                    }
                }
            });
            monsters.Add(mon);
        }

        if (!IsFight())
        {
            CloseDoors();
        }
        else
        {
            HideMonsters();
            OnEnter.AddListener(RevealMonsters);
            OnExit.AddListener(HideMonsters);
        }
    }
Esempio n. 2
0
 private void OnDestroy()
 {
     OnEnter.RemoveAllListeners();
     OnExit.RemoveAllListeners();
 }