예제 #1
0
    // 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();
        }
    }
예제 #2
0
    // 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();
        }
    }