Skip to content

Latest commit

 

History

History
88 lines (71 loc) · 2.64 KB

spawner-final.md

File metadata and controls

88 lines (71 loc) · 2.64 KB

#Spawner.cs - Final

This code includes updated code to: DestroyAllSpawnedObjects Destroys objects with Component of type: PickUp, ScorePickUp, Hazard, change to fix in your code so it is consistent. You may want to delete the MiniGameManager.cs script, otherwise fix the error caused there.

using UnityEngine;

public class Spawner : MonoBehaviour {

    [Header("Set in Inspector")]
    public GameObject goodPrefab, badPrefab;

    public int pauseTime = 2; //wait 2 seconds before spawning
    public int numToSpawn = 10;
    public float chanceToSpawnBad = .10f;
    public float xRange = 8.0f;
    public float yRangeTop = -2.0f;
    public float yRangeBottom = -3.5f;
    public bool activeSpawning = false;


    // Use this for initialization
    void Start() {
        //activeSpawning = true; ///remove later when we start spawning from another class
        //StartSpawning(); //remove later
    }

    public void StartSpawning()   //will be called from another class
    {
        for (int i = 0; i < numToSpawn; i++)
        {
            Invoke("SpawnPrefab", pauseTime * i * 2);
        }
    }

    /// <summary>
    /// Spawns one prefab:  good or bad with some probability of bad
    /// </summary>
    public void SpawnPrefab()
    {
        if (activeSpawning)
        {
            Vector3 position = transform.localPosition;
            position.x = Random.Range(-xRange, xRange);
            position.y = Random.Range(yRangeBottom, yRangeTop);
            float rand = Random.value; //returns value between 0.0 - 1.0 (property)
            GameObject prefab;
            if (rand < chanceToSpawnBad)
            {
                prefab = Instantiate(badPrefab, position, transform.rotation);    //instantiate bad
            }
            else  //instantiate good
            {
                prefab = Instantiate(goodPrefab, position, transform.rotation);
            }
            prefab.transform.SetParent(this.transform); //set Spawner as parent of prefabs in Hierarchy 
            Debug.Log("Spawned 1");
        }
    } //end SpawnPrefab


    public void DestroySpawnedObjects()
    {
        PickUp[] items = FindObjectsOfType<PickUp>();
        foreach (PickUp item in items    )
        {
            Destroy(item.gameObject);
        }

        ScorePickUp[] scoreItems = FindObjectsOfType<ScorePickUp>();
        foreach (ScorePickUp scoreItem in scoreItems)
        {
            Destroy(scoreItem.gameObject);
        }
        
        Hazard[] hazards = FindObjectsOfType<Hazard>();
        foreach (Hazard hazard in hazards)
        {
            Destroy(hazard.gameObject);
        }
    } //end DestroySpawnedObjects
} //end of class