示例#1
0
    private IEnumerator Spawning()
    {
        while (true)
        {
            if (Time.time > spawnTime)
            {
                spawnTime = Time.time + Random.Range(minTimeSpawn, maxTimeSpawn);
                GameObject go;

                //Get random upgrade from pool if upgrades amount more than one
                if (upgrades.Length > 1)
                {
                    string upgrade = upgrades[Random.Range(0, upgrades.Length)].name;
                    go = SpawningPool.CreateFromCache(upgrade);
                }
                else
                {
                    go = SpawningPool.CreateFromCache(upgrades[0].name);
                }

                //Set position
                upgradeSpawnPos.x     = Random.Range(-bound.x, bound.x);
                go.transform.position = upgradeSpawnPos;

                //Add to array
                var upgradeComponent = go.GetComponent <UpgradeBase>();
                activeUpgrades.Add(upgradeComponent);
            }

            yield return(null);
        }
    }
示例#2
0
    private IEnumerator SendEnemytWave()
    {
        RestPlaceController restPlaceCon;
        GameObject          enemyGo;
        EnemyController     enemy;
        PatternRoute        pattern;
        Enemy enemyInfo;
        int   range;

        while (true)   //TODO Canviar per comprovació de Game Over
        {
            range = Random.Range(level.minEnemiesPerWave, level.maxEnemiesPerWave);
            for (var i = 0; i < range; i++)
            {
                if (CheckRestPlacesEnemy(out restPlaceCon))
                {
                    enemyGo   = SpawningPool.CreateFromCache("EO1");
                    enemy     = enemyGo.GetComponent <EnemyController> ();
                    pattern   = restPlaceCon.enemyComming(enemy);
                    enemyInfo = new Enemy(
                        GetNextEnemyIdString(),
                        level.enemyHealth,
                        level.enemySpeed,
                        pattern,
                        restPlaceCon,
                        1
                        );
                    enemy.Init(enemyInfo);
                }
                Debug.Log(restPlaceCon);
            }
            yield return(new WaitForSeconds(level.timeBetweenEnemyWaves));
        }
    }
示例#3
0
 private void ProjectileSpawn()
 {
     for (int i = 0; i < barrels.Length; i++)
     {
         GameObject go = SpawningPool.CreateFromCache(bulletPrefab.name);
         go.transform.position = barrels[i].position;
         go.transform.rotation = Quaternion.identity;
     }
     nextFireTime = Time.time + fireDelay;
 }
    // Start is called before the first frame update
    void Start()
    {
        int count = 3;

        for (int i = 0; i <= count; i++)
        {
            GameObject t_waveMonster = ReferenceManager.instance.GetData(UnityEngine.Random.Range(0, count));

            FunctionHelper.AddPrefabCheck(t_waveMonster.name, t_waveMonster);
            GameObject t_go = SpawningPool.CreateFromCache(t_waveMonster.name);
        }
    }
示例#5
0
    IEnumerator SpawnWithDelay(int amount, float delay)
    {
        while (ships.Count < enemyCount)
        {
            if (Time.time >= lastSpawnTime)
            {
                lastSpawnTime = Time.time + spawnEnemyDelay;

                GameObject go = SpawningPool.CreateFromCache(enemyPrefab.name);
                go.transform.position = spawnPosition;  //For safe object spawn

                EnemyShip ship = go.GetComponent <EnemyShip>();
                ship.OnDeactivate += RecountActiveShips;
                ship.SetPath(path);
                ships.Add(ship);

                currentActiveShipCount++;
                spawnedShipsCount++;
            }
            yield return(null);
        }
    }
示例#6
0
    private IEnumerator SendTouristWave()
    {
        RestPlaceController restPlaceCon;
        GameObject          turistaGo;
        PatternRoute        pattern;
        TouristController   tourist;
        Tourist             touristInfo;
        int    range;
        string touristId;

        while (true)
        {
            range = Random.Range(level.minTouristsPerWave, level.maxTouristsPerWave);
            for (var i = 0; i < range; i++)
            {
                if (CheckRestPlaces(out restPlaceCon))
                {
                    yield return(new WaitForSeconds(level.touristSpanSpeed));

                    turistaGo   = SpawningPool.CreateFromCache("TO1");
                    touristId   = GetNextTouristIdString();
                    tourist     = turistaGo.GetComponent <TouristController> ();
                    pattern     = restPlaceCon.touristComming(tourist);
                    touristInfo = new Tourist(
                        TourisType.Girl,
                        touristId,
                        level.touristSpeed,
                        pattern,
                        restPlaceCon,
                        2
                        );
                    tourist.Init(touristInfo);
                }
            }
            yield return(new WaitForSeconds(level.timeBetweenWaves));
        }
    }