// Spawn asteroids for this level. IEnumerator LevelStart() { Debug.Log("LEVEL STARTING"); m_UIText.text = "Level " + m_Level; // Disable ship controls (currently ship is inactive in Start, but may change). m_Ship.SetActive(true); //m_Ship.GetComponent<ShipMovement>().enabled = false; //m_Ship.GetComponent<ShipShooter>().enabled = false; // Reset ship position/velocity. //m_Ship.GetComponent<Rigidbody>().velocity = Vector3.zero; //m_Ship.GetComponent<Rigidbody>().angularVelocity = Vector3.zero; //m_Ship.transform.position = Vector3.zero; yield return(new WaitForSeconds(2f)); // Spawn some asteroids. Poolable asteroid; for (int i = 0; i < m_AsteroidCount; i++) { if (i < m_AsteroidCount / 2) { asteroid = m_AsteroidBigPool.Pop(); } else { asteroid = m_AsteroidSmallPool.Pop(); } AsteroidBehaviour behaviour = asteroid.GetComponent <AsteroidBehaviour>(); asteroid.gameObject.SetActive(true); behaviour.SpawnRandomPosition(); behaviour.SetRandomForces(); } }
// Pop all asteroids out of their pools. (also sets position/forces) void PopAllAsteroids() { int count = m_AsteroidParent.childCount; for (int i = 0; i < count; i++) { GameObject asteroid = m_AsteroidParent.GetChild(i).gameObject; if (asteroid.CompareTag("AsteroidBig")) { m_AsteroidBigPool.Pop(); } else { m_AsteroidSmallPool.Pop(); } AsteroidBehaviour behaviour = asteroid.GetComponent <AsteroidBehaviour>(); asteroid.SetActive(true); behaviour.SpawnRandomPosition(); behaviour.SetRandomForces(); } }