/// <summary> /// Creates enemy of enemyType in position. Ignores all restrictions. /// </summary> /// <param name="enemyType"></param> /// <param name="number"></param> //TODO: метод с очень сильными связями. Подумать как ослабить. public void ForceCreate(EnemyType enemyType, Vector3 position) { GameObject enemy = FactoryList.Get(enemyType).Create(position); enemy.GetComponent <DebrisCreator>()?.SetEnemyCreator(this); //Добавить врага в трекер. EnemyTracker?.Add(enemy); EnemyCreated?.Invoke(enemy); }
//Создает одного врага на основе процентных шансов переданного в параметре массива. private void SpawnSingle(int[] spawnChances) { int chance = UnityEngine.Random.Range(1, 101); for (int i = 0; i < spawnChances.Length; i++) { if (chance < spawnChances[i]) { if (IsSpawnAllowed(i)) { GameObject enemy = EnemyFactories[i].Create(); enemy.GetComponent <DebrisCreator>()?.SetEnemyCreator(this); //Добавить врага в трекер. EnemyTracker?.Add(enemy); EnemyCreated?.Invoke(enemy); return; } } } }