Exemple #1
0
    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));
        }
    }
Exemple #2
0
 protected virtual void OnEnable()
 {
     if (!_rigidbody)
     {
         _rigidbody = GetComponent <Rigidbody>();
     }
     _screenSize = FindObjectOfType <ScreenSyze>();
 }
Exemple #3
0
 // Start is called before the first frame update
 void Start()
 {
     _screenSize = FindObjectOfType <ScreenSyze>();
     _rigidbody  = GetComponent <Rigidbody>();
 }