private void Awake() { InitiatePool(); InitiateSpawner(); enemySpawner.Spawn(); }
private IEnumerator Fire(float interval) { while (true) { _spawner?.Spawn(projectile); yield return(new WaitForSeconds(interval)); } }
private ISpawner InstantiateSpawner(int amount, float delay, IContentPrefab prefab) { GameObject newSpawner = Instantiate(NestedSpawner); ISpawner spawner = newSpawner.GetComponent <ISpawner>(); spawner.OnSpawn += OnSpawnerSpawn; spawner.OnFinished += OnSpawnerFinished; spawner.Spawn(amount, delay, prefab); return(spawner); }
/// <summary> /// Start enemy spawning /// </summary> /// <param name="position">start point</param> /// <param name="vehicle"></param> /// <returns></returns> public void Update() { float currentTime = Time.time; if (currentTime > cleanTime) { // return to pool, if out of background DisableUnused(); cleanTime = currentTime + CleanTimePeriod; } if (!shouldSpawn) { return; } if (target == null) { // find target FindTarget(); // and try next time return; } // spawn to the limit of background blocks while ((currentPos - target.Target.position).sqrMagnitude < MaxSpawnDistance * MaxSpawnDistance) { // add to the queue new spawner indices //SetNextSpawner(); //int index = spawnersQueue.Dequeue(); int index = Random.Range(0, spawners.Count); ISpawner spawner = spawners[index]; Vector2 bounds = Background.GetBlockBounds(currentPos); spawner.Spawn(currentPos, target.Target, bounds, spawnedObjects); // to the next spawner point float d = spawner.Distance; currentPos += target.Target.forward * d; } }
private ITetromino CreateTetromino() { return(_spawner.Spawn().GetComponent <ITetromino>()); }