public void Damage(int damage) { SoundManager.instance.explode(); int finalHealth = health - damage; for (int i = 0; i < spawnAmount; i++) { GameObject explosion = PoolManager.instance.explotionPool.GetObject(); explosion.transform.position = transform.position; explosion.SetActive(true); ExplotionController explosionController = explosion.GetComponent <ExplotionController> (); explosionController.SmallExplosion(); // If the asteroid wasn't fully destroyed, split it if (finalHealth > 0) { GameObject clone = PoolManager.instance.asteroidPool.GetObject(); if (clone != null) { AsteroidController asteroidController = clone.GetComponent <AsteroidController>(); if (asteroidController != null) { clone.transform.position = transform.position; clone.SetActive(true); if (finalHealth == 1) { asteroidController.MakeSmallAsteroid(); } else if (finalHealth == 2) { asteroidController.MakeMediumAsteroid(); } else if (finalHealth == 3) { asteroidController.MakeLargeAsteroid(); } } else { Debug.LogWarning("Asteroid pool not returning asteroids"); } } else { Debug.Log("Empty asteroid pool"); } } } GameManager.instance.OnDestroyAsteroid(finalHealth); gameObject.SetActive(false); }
public void CreateLevel(int level) { remainingAsteroids = 0; for (int i = 0; i < level + initialAsteroids; i++) { GameObject asteroid = PoolManager.instance.asteroidPool.GetObject(); if (asteroid != null) { AsteroidController asteroidController = asteroid.GetComponent <AsteroidController>(); if (asteroidController != null) { asteroid.SetActive(true); // Make sure the asteroid doesn't spawn too close to the player float rotate = Random.Range(0, 360f); float dist = Random.Range(asteroidsSpawnMinRadius, asteroidsSpawnMaxRadius); asteroid.transform.position = player.transform.position; asteroid.transform.Rotate(new Vector3(0, 0, rotate)); asteroid.transform.Translate(new Vector3(dist, dist)); asteroidController.MakeLargeAsteroid(); remainingAsteroids += 3 * 3; } else { Debug.LogWarning("Asteroid pool not returning asteroids"); } } else { Debug.Log("Empty asteroid pool"); } } bonusTime = bonusTimePerLevel * GetLevel(); }