public void StartLevel() { var terrain = LevelCreator.Terrain; var startPosition2D = LevelCreator.StartPostion; for (var i = 0; i < GameController.Instance.ActivePlayers; i++) { Vector3 spawnPosition = new Vector3(startPosition2D.x, 0, startPosition2D.y); switch (i) { case 0: spawnPosition += new Vector3(3, 0, 0); break; case 1: spawnPosition += new Vector3(0, 0, 3); break; case 2: spawnPosition += new Vector3(-3, 0, 0); break; case 3: spawnPosition += new Vector3(0, 0, -3); break; } spawnPosition = new Vector3(spawnPosition.x, terrain.SampleHeight(spawnPosition) + 0.05f, spawnPosition.z); PlayerCharacters[i].transform.position = spawnPosition; } Vector3 wispPosition = new Vector3(startPosition2D.x, 0, startPosition2D.y); wispPosition += new Vector3(0, terrain.SampleHeight(wispPosition) + 0.05f, 0); LightWisp.GetComponent <NavMeshAgent>().Warp(wispPosition); var cameraPosition = new Vector3(startPosition2D.x, 0, startPosition2D.y); MainCamera.gameObject.transform.position = cameraPosition + new Vector3(0, terrain.SampleHeight(cameraPosition) + 20, 0); //Reactivate all controllers for (var i = 0; i < GameController.Instance.ActivePlayers; i++) { PlayerCharacters[i].gameObject.SetActive(true); } //Initialize Light Wisp if (LightWisp && LightWisp.GetComponent <LightOrbEffects>()) { LightWisp.GetComponent <LightOrbEffects>().InitializeLightOrb(PlayerCharacters, GameController.Instance.ActivePlayers); } //Set reference to terrain; SwarmlingSpawner.SetTerrain(LevelCreator.Terrain); //Initialize SwarmSpawner if (SwarmlingSpawner) { SwarmlingSpawner.InitializeSwarmSpawner(PlayerCharacters, GameController.Instance.ActivePlayers); } }