Exemplo n.º 1
0
    void Update()
    {
        List <LevelAndBounds> removedLevels = new List <LevelAndBounds>();

        //Move levels to the left
        foreach (var level in levels)
        {
            GameObject levelObject = level.level;
            if (levelObject != null)
            {
                //Move left
                levelObject.transform.position += Vector3.left * moveSpeed * Time.deltaTime;
                level.bounds.center            += Vector3.left * moveSpeed * Time.deltaTime;
                //Destroy level if it is off the screen
                if (Camera.main.WorldToScreenPoint(level.bounds.center + Vector3.right * level.bounds.extents.x).x < 0)
                {
                    Destroy(levelObject);
                    removedLevels.Add(level);
                }
            }
        }
        //Add new level if current level is no longer off screen
        LevelAndBounds lastLevel = levels[levels.Count - 1];

        if (Camera.main.WorldToScreenPoint(lastLevel.bounds.center + Vector3.right * lastLevel.bounds.extents.x).x < Screen.width)
        {
            levels.Add(LoadNextLevel());
        }
        //Removed destroyed levels
        foreach (var level in removedLevels)
        {
            levels.Remove(level);
        }
    }
Exemplo n.º 2
0
 int moveSpeedSteps = 5; //Amount of steps between min and max movement speeds
 void Start()
 {
     levels = new List <LevelAndBounds>();
     //Get the current levels in the scene
     foreach (Transform t in transform)
     {
         LevelAndBounds level = new LevelAndBounds(t.gameObject, CalculateSpriteBounds(t.gameObject), 0);
         levels.Add(level);
     }
 }