Exemplo n.º 1
0
    private void Spawn()
    {
        Debug.Log("Max: " + waves[wave].max);
        Debug.Log("Killed: " + waves[wave].killed);
        Debug.Log("Spawned: " + waves[wave].spawned);
        Debug.Log("Simultaneus: " + waves[wave].simultaneus);

        if (waves[wave].max == waves[wave].killed)
        {
            wave++;

            Debug.Log("Wave: " + wave);
            return;
        }

        if (nextSpawn != 0f && Time.time < nextSpawn)
        {
            return;
        }

        if (waves[wave].spawned - waves[wave].killed >= waves[wave].simultaneus)
        {
            return;
        }

        if (waves[wave].spawned == waves[wave].max)
        {
            return;
        }

        if (nextSpawn == 0f || Time.time > nextSpawn)
        {
            Debug.Log("Spawning");

            int        index      = Random.Range(0, spawnPositions.Length);
            GameObject npc        = Instantiate(enemy, spawnPositions[index].transform.position, Quaternion.identity);
            EnemyCtrl  script     = npc.GetComponent <EnemyCtrl>();
            UnityEvent deathEvent = script.GetEvent();
            deathEvent.AddListener(Killed);

            nextSpawn = Time.time + waves[wave].delay;
            waves[wave].spawned++;
        }
    }