IEnumerator Spawner() { GameObject nextAsteroid; while (true) { if (_asteroidsOnBase.Count > 0) { nextAsteroid = _asteroidsOnBase[0]; Vector3 newPosition = nextAsteroid.transform.position; ScreenSyze screenSyze = FindObjectOfType <ScreenSyze>(); newPosition.x = Random.Range(screenSyze.GetScreenMin().x, screenSyze.GetScreenMax().x); nextAsteroid.transform.position = newPosition; nextAsteroid.SetActive(true); _asteroidsOnScreen.Add(nextAsteroid); _asteroidsOnBase.Remove(nextAsteroid); if (nextAsteroid.TryGetComponent <Health>(out Health health)) { health.ZeroHP.AddListener(ReturnToBase); health.ZeroHP.AddListener(FindObjectOfType <TaskPanel>().OnAsteroidDied); } if (nextAsteroid.TryGetComponent <Asteroid>(out Asteroid asteroid)) { asteroid.OutOfScreen.AddListener(ReturnToBase); } } yield return(new WaitForSeconds(_delayTime)); } }
protected virtual void OnEnable() { if (!_rigidbody) { _rigidbody = GetComponent <Rigidbody>(); } _screenSize = FindObjectOfType <ScreenSyze>(); }
// Start is called before the first frame update void Start() { _screenSize = FindObjectOfType <ScreenSyze>(); _rigidbody = GetComponent <Rigidbody>(); }