using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// Class for dealing with the spawning of Asteroids /// public class AsteroidSpawning : ObjectSpawning { public GameObject asteroidPrefab; public float minWidthScaleRange; public float minHeightScaleRange; public float maxWidthScaleRange; public float maxHeightScaleRange; public int numberToSpawn; private void Awake() { _spawnedObject = asteroidPrefab; _numberToSpawn = numberToSpawn; } /// /// Reduce the spawned counter for this spawner /// public override void ReduceSpawnedCount() { objectCount = Mathf.Clamp(objectCount - 1, 0, _numberToSpawn); base.ReduceSpawnedCount(); } /// /// Spawn the gameObject assigned to this spawner /// protected override void DoASpawn() { float xPos = Random.Range(-xSpawnRange, xSpawnRange); float yPos = Random.Range(-ySpawnRange, ySpawnRange); float zPos = Random.Range(-zSpawnRange, zSpawnRange); float widthScale = Random.Range(minWidthScaleRange, maxWidthScaleRange); float heightScale = Random.Range(minHeightScaleRange, maxHeightScaleRange); // If debug is checked then try to spawn the object above the player, this is to test collisions if (debugSpawn) { GameObject currentPlayer = GameObject.Find("Player"); xPos = currentPlayer.transform.position.x; zPos = currentPlayer.transform.position.z; yPos = currentPlayer.transform.position.y + 10; } GameObject newSpawn = Instantiate(_spawnedObject); // Set the start height of the gameObject from the blackhole HoverMovement newSpawnMovement = newSpawn.GetComponent(); if (newSpawnMovement) { newSpawnMovement.startPositionVector = new Vector3(xPos, yPos, zPos); newSpawnMovement.ForceHeightAdjust(Random.Range(minSpawnHeight, maxSpawnHeight)); } newSpawn.transform.localScale = new Vector3(widthScale, heightScale, widthScale); // Set the spawned to this on the gameObject AsteroidObjectShared newSpawnShared = newSpawn.GetComponent(); if (newSpawnShared) { newSpawnShared.Spawner = this; } newSpawn.SetActive(true); objectCount++; base.DoASpawn(); } }