void SpawnCloud() { int num = Random.Range(0, spawnPoints.Count); Transform spawnPoint = spawnPoints[num]; Transform newCLoud = Transform.Instantiate(clouds[Random.Range(0, clouds.Length)]); if (0 == num) { CloudBehavior cb = newCLoud.GetComponent <CloudBehavior>(); cb.SetSpeed(1f); cb.SetSortingLayer("backgroundClouds"); } newCLoud.position = spawnPoint.position; }
private void Start() { for (int i = 0; i < maxClouds; i++) { GameObject newCloud = Instantiate(cloudPrefabs [Mathf.RoundToInt(Random.Range(0f, cloudPrefabs.Length - 1))], new Vector3((Random.Range(0f, xBound)) + transform.position.x, transform.position.y + Random.Range(-yRange, yRange), 0f), transform.rotation, gameObject.transform); // Try to set the sorting layer and order in layer for the new cloud try { newCloud.GetComponent <SpriteRenderer> ().sortingLayerName = cloudLayer; } catch { Debug.Log("Invalid Sorting Layer name"); } newCloud.GetComponent <SpriteRenderer> ().sortingOrder = orderInLayer; newCloud.GetComponent <SpriteRenderer> ().color = cloudColor; if (newCloud.GetComponent <CloudBehavior> () != null) { // Set the vars to the CloudBehavior component of the new cloud CloudBehavior newCloudBehav = newCloud.GetComponent <CloudBehavior> (); newCloudBehav.cloudGenerator = this.gameObject; newCloudBehav.speed = Random.Range(minSpeed, maxSpeed); newCloudBehav.scale = Random.Range(minScale, maxScale); newCloudBehav.xBound = xBound; } else { // Set the vars to the StormyCloudBehavior component of the new cloud StormyCloudBehavior newCloudBehav = newCloud.GetComponent <StormyCloudBehavior> (); newCloudBehav.cloudGenerator = this.gameObject; newCloudBehav.speed = Random.Range(minSpeed, maxSpeed); newCloudBehav.scale = Random.Range(minScale, maxScale); newCloudBehav.xBound = xBound; } childClouds.Add(newCloud); ++numberOfClouds; // Increase the number of clouds by 1 } }
private void Update() { // If the max number of clouds isn't onscreen, spawn one and set its properties if (numberOfClouds <= maxClouds) { GameObject newCloud = Instantiate(cloudPrefabs [Mathf.RoundToInt(Random.Range(0f, cloudPrefabs.Length - 1))], new Vector3(transform.position.x, transform.position.y + Random.Range(-yRange, yRange), 0f), transform.rotation, gameObject.transform); // Try to set the sorting layer and order in layer for the new cloud try { newCloud.GetComponent <SpriteRenderer> ().sortingLayerName = cloudLayer; } catch { Debug.Log("Invalid Sorting Layer name"); } newCloud.GetComponent <SpriteRenderer> ().sortingOrder = orderInLayer; newCloud.GetComponent <SpriteRenderer> ().color = cloudColor; if (newCloud.GetComponent <CloudBehavior> () != null) { // Set the vars to the CloudBehavior component of the new cloud CloudBehavior newCloudBehav = newCloud.GetComponent <CloudBehavior> (); newCloudBehav.cloudGenerator = this.gameObject; newCloudBehav.speed = Random.Range(minSpeed, maxSpeed); newCloudBehav.scale = Random.Range(minScale, maxScale); newCloudBehav.xBound = xBound; } else { // Set the vars to the StormyCloudBehavior component of the new cloud StormyCloudBehavior newCloudBehav = newCloud.GetComponent <StormyCloudBehavior> (); newCloudBehav.cloudGenerator = this.gameObject; newCloudBehav.speed = Random.Range(minSpeed, maxSpeed); newCloudBehav.scale = Random.Range(minScale, maxScale); newCloudBehav.xBound = xBound; } childClouds.Add(newCloud); ++numberOfClouds; // Increase the number of clouds by 1 } if (timeController != null) // I put this line in so that you don't have to use the time controller { if (timeController.GetComponent <TitlescrnTimeHandler> ().currentState == TitlescrnTimeHandler.DayState.NOON) { foreach (GameObject cloud in childClouds) { cloud.GetComponent <CloudBehavior> ().isNoon = true; } } else { foreach (GameObject cloud in childClouds) { cloud.GetComponent <CloudBehavior> ().isNoon = false; } } } else { if (triggerNoonClouds) { foreach (GameObject cloud in childClouds) { if (cloud.GetComponent <CloudBehavior> () != null) { cloud.GetComponent <CloudBehavior> ().isNoon = true; } } } else { foreach (GameObject cloud in childClouds) { if (cloud.GetComponent <CloudBehavior> () != null) { cloud.GetComponent <CloudBehavior> ().isNoon = false; } } } } }