private void SetLaneSpawner() { AtkSpawner[] spawners = FindObjectsOfType <AtkSpawner>(); foreach (AtkSpawner spawner in spawners) { bool isCloseEnough = (Mathf.Abs(spawner.transform.position.y - transform.position.y) <= 0.4); if (isCloseEnough) { myLaneSpawner = spawner; } } }
// Start is called before the first frame update void Start() { GameObject[] listObject = GameObject.FindGameObjectsWithTag("atkSpawner"); foreach (var obj in listObject) { AtkSpawner spawnerTmp = obj.GetComponent <AtkSpawner>(); if (spawnerTmp == null) { continue; } listSpawner.Add(spawnerTmp); } StartCoroutine(StartWave()); }
private void SpawnAttacker() { if (listSpawner.Count <= 0) { return; } if (wave == null) { return; } string[] listCreep = wave.GetNextCreep(); if (listCreep.Length <= 0) { return; } foreach (var creep in listCreep) { //FIXME: why last lane not spawn int idxOfSpawner = Random.Range(0, listSpawner.Count); AtkSpawner spawner = listSpawner[idxOfSpawner]; spawner.SpawnAttacker(Constant.GetPrefabPath(creep), wave); } //Debug.Log("wave left: " + wave.NumberCreepLeft); }