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>()); } } }
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>()); } } }