示例#1
0
 // Function to add planet to game world
 private void SpawnPlanet(GameObject asteroid, SO_Planet data, Vector3 position)
 {
     // Check gameobject is not null
     if (asteroid)
     {
         GameObject toSpawn = Instantiate(asteroid, position, new Quaternion(), this.transform);
         toSpawn.GetComponent <S_Astroid>().SendData(data);
     }
 }
示例#2
0
    public bool SpawnLevel(SO_Planet starterPlanet, List <SO_Planet> planets, List <SO_Planet> joiningPlanets, int numberOfPlanets)
    {
        SpawnedPlanets        = new List <SpawnedPlanet>();
        SpawnedJoiningPlanets = new List <SpawnedPlanet>();

        // Instantiate Starter Planet
        SpawnStarterPlanet(starterPlanet);


        for (int i = 0; i < numberOfPlanets; i++)
        {
            bool spawned = false;
            while (!spawned)
            {
                // Select Random planets
                int rSpawnPlanet   = Random.Range(0, SpawnedPlanets.Count);
                int rJoiningPlanet = Random.Range(0, joiningPlanets.Count);
                int rPlanet        = Random.Range(0, planets.Count);
                rPlanet = i < planets.Count ? i : rPlanet;

                // Get Planet Data
                SO_Planet joiningData = joiningPlanets[rJoiningPlanet];
                SO_Planet planetData  = planets[rPlanet];

                // Create random vector for joining planet
                Vector3 joiningOrigin = RandomSpawnPoint(SpawnedPlanets[rSpawnPlanet], joiningData.size, true);

                // Check if it is a spawnable vector
                if (IsSpawnable(joiningOrigin, joiningData.size))
                {
                    SpawnedPlanet joiningPlanet = new SpawnedPlanet(joiningOrigin, joiningData.size);

                    // Repeat for the spawning planet
                    Vector3 planetOrigin = RandomSpawnPoint(joiningPlanet, planetData.size, false);

                    if (IsSpawnable(planetOrigin, planetData.size))
                    {
                        SpawnedPlanet planet = new SpawnedPlanet(planetOrigin, planetData.size);

                        // Spawn Planets
                        SpawnPlanet(m_Astroid, joiningData, joiningOrigin);
                        SpawnPlanet(m_Astroid, planetData, planetOrigin);
                        SpawnedJoiningPlanets.Add(joiningPlanet);
                        SpawnedPlanets.Add(planet);

                        // End Loop
                        spawned = true;
                    }
                }
            }
        }
        return(true);
    }
示例#3
0
 // Method that builds starter planet
 private void SpawnStarterPlanet(SO_Planet starterPlanet)
 {
     SpawnPlanet(m_AsteroidStarter, starterPlanet, new Vector3(0, 0, 0));
     SpawnedPlanets.Add(new SpawnedPlanet(new Vector3(0, 0, 0), starterPlanet.size));
 }
示例#4
0
 public void SendData(SO_Planet LevelDataPass)
 {
     LevelData = LevelDataPass;
     this.transform.localScale = new Vector3(LevelData.size, LevelData.size, LevelData.size);
     meshRend.material         = LevelData.material;
 }