Exemplo n.º 1
0
 public void SpawnEnemies() //Вообще хорошо бы просто в префабе сцены расставить противников (как в Арчеро) или места их возможного появления
 {
     if (enemies.Count == 0)
     {
         throw new System.ArgumentNullException("enemies", "Лист префабов противников пуст");
     }
     for (int i = 0; i < enemyCount; i++)
     {
         Vector3 spawnPos;
         int     loopBreaker = 0;
         do
         {
             loopBreaker++;
             spawnPos = new Vector3(Random.Range(-4f, 4f), 0.51f, Random.Range(2f, 13f)); //Значения вытаскиваются из конструктора поля или из данных о префабе поля, если игровые поля будут разного размера
         } while (CheckCollisions(spawnPos) && loopBreaker < 100);                        //Может войти в бесконечный цикл, если не будет места для спавна
         if (loopBreaker < 100)
         {
             var newEnemy = Instantiate(enemies[Random.Range(0, enemies.Count)], transform);
             newEnemy.transform.position = spawnPos;
             enemyHandler.AddEnemy(newEnemy.GetComponent <Enemy>());
         }
     }
 }
Exemplo n.º 2
0
    public void SpawnEnemies()
    {
        if (enemies.Count == 0)
        {
            throw new System.ArgumentNullException("enemies", "Enemies list is empty");
        }
        for (int i = 0; i < enemyCount; i++)
        {
            Vector3 spawnPos;
            int     loopBreaker = 0;
            do
            {
                loopBreaker++;
                spawnPos = new Vector3(Random.Range(-1.4f, 1.4f), 1f, Random.Range(-1.2f, 1.2f));
            } while (CheckCollisions(spawnPos) && loopBreaker < 100);

            if (loopBreaker < 100)
            {
                var newEnemy = Instantiate(enemies[Random.Range(0, enemies.Count)], transform);
                newEnemy.transform.position = spawnPos;
                enemyHandler.AddEnemy(newEnemy.GetComponent <Enemy>());
            }
        }
    }