Пример #1
0
    IEnumerator Start()
    {
        if (meteoritePrefab == null)
        {
            Debug.LogError("No meteorite prefab set. Please correct and restart.", this);
            enabled = false;
            yield break;
        }

        player     = FindObjectOfType(typeof(Player)) as Player;
        gameGUI    = GetComponent <GameGUI> ();
        menuGUI    = GetComponent <MenuGUI> ();
        creditsGUI = GetComponent <CreditsGUI> ();
        setupGUI   = GetComponent <SetupGUI> ();

        // Instantiate meteorite and warning object pools - one instance of each per frame //

        meteoritePool = new Queue <Meteorite> ();
        warningPool   = new Queue <ImpactWarning> ();
        for (int i = 0; i < poolSize && Application.isPlaying; i++)
        {
            yield return(null);

            DespawnMeteorite(Instantiate(meteoritePrefab, transform.position, transform.rotation) as Meteorite);
            DespawnWarning(Instantiate(meteoriteWarningPrefab, transform.position, transform.rotation) as ImpactWarning);
        }

        while (Application.isPlaying)
        // Meteorite spawn loop
        {
            yield return(new WaitForSeconds(Random.Range(minimumDelay, maximumDelay)));

            SpawnMeteorite(
                transform.position +
                transform.forward * Random.Range(showerArea.y * -0.5f, showerArea.y * 0.5f) +
                transform.right * Random.Range(showerArea.x * -0.5f, showerArea.x * 0.5f),
                transform.rotation * Quaternion.AngleAxis(90.0f, transform.right)
                );
        }
    }
Пример #2
0
    IEnumerator Start()
    {
        if (meteoritePrefab == null)
        {
            Debug.LogError ("No meteorite prefab set. Please correct and restart.", this);
            enabled = false;
            yield break;
        }

        player = FindObjectOfType (typeof (Player)) as Player;
        gameGUI = GetComponent<GameGUI> ();
        menuGUI = GetComponent<MenuGUI> ();
        creditsGUI = GetComponent<CreditsGUI> ();
        setupGUI = GetComponent<SetupGUI> ();

        // Instantiate meteorite and warning object pools - one instance of each per frame //

        meteoritePool = new Queue<Meteorite> ();
        warningPool = new Queue<ImpactWarning> ();
        for (int i = 0; i < poolSize && Application.isPlaying; i++)
        {
            yield return null;
            DespawnMeteorite (Instantiate (meteoritePrefab, transform.position, transform.rotation) as Meteorite);
            DespawnWarning (Instantiate (meteoriteWarningPrefab, transform.position, transform.rotation) as ImpactWarning);
        }

        while (Application.isPlaying)
        // Meteorite spawn loop
        {
            yield return new WaitForSeconds (Random.Range (minimumDelay, maximumDelay));

            SpawnMeteorite (
                transform.position +
                    transform.forward * Random.Range (showerArea.y * -0.5f, showerArea.y * 0.5f) +
                    transform.right * Random.Range (showerArea.x * -0.5f, showerArea.x * 0.5f),
                transform.rotation * Quaternion.AngleAxis (90.0f, transform.right)
            );
        }
    }