public void OpenDoors() { foreach (Door d in doors) { if (d) { d.Open(); } } foreach (GameObject go in spawnPlayer) { RoomExit temp = go.GetComponent <RoomExit>(); if (temp) { temp.EnableExit(true); } } }
public void InitRoom(GameObject roomPrefab, SMonsterSpawnConfiguration monstersToSpawn) { //SaveGameManager.instance.SaveGame(playerStats.roomNumber, playerStats.hp, playerStats.gold); int i, j; //GameObject room = room = Instantiate(roomPrefab); surface.BuildNavMesh(); players = new List <Player>(GameObject.FindObjectsOfType <Player>()); foreach (Player p in players) { p.EnableAgent(false); } spawnMonster = new List <GameObject>(GameObject.FindGameObjectsWithTag("Spawner")); j = 0; foreach (SMonsterSpawnConfiguration.Spawner s in monstersToSpawn.monsters) { for (i = 0; i < s.numberToSpawn; i++) { //Debug.Log("Instanzio nuovo mostro."); GameObject newMonster = Instantiate(s.monsterToSpawn, spawnMonster[j % spawnMonster.Count].transform.position, spawnMonster[j % spawnMonster.Count].transform.rotation); newMonster.transform.rotation = spawnMonster[j % spawnMonster.Count].transform.rotation; monsters.Add(newMonster.GetComponent <Monster>()); monstersAlive++; //Debug.Log("Mostro " + newMonster.name + " " + monstersAlive + " " + newMonster.transform.position + " " + monsters.Count); j++; } } doors = new List <Door>(GameObject.FindObjectsOfType <Door>()); spawnPlayer = new List <GameObject>(GameObject.FindGameObjectsWithTag("SpawnerPlayer")); for (i = 0; i < spawnPlayer.Count; i++) { RoomExit newSpawnPoint = Instantiate(playerSpawnExitPrefab, spawnPlayer[i].transform.position, spawnPlayer[i].transform.rotation); exits.Add(newSpawnPoint); newSpawnPoint.EnableExit(false); spawnPlayer[i] = newSpawnPoint.gameObject; } i = 0; foreach (Player p in players) { p.transform.position = spawnPlayer[i % spawnPlayer.Count].transform.position; p.transform.rotation = spawnPlayer[i % spawnPlayer.Count].transform.rotation; //elimino la possibilita' di uscire da qua spawnPlayer[i % spawnPlayer.Count].GetComponent <RoomExit>().CloseExit(); //print(p.transform.position + " " + spawnPlayer[i % spawnPlayer.Length].transform.position); float minDistance = 80000f; int closestDoor = 0; for (j = 0; j < doors.Count; j++) { if (Vector3.Distance(p.transform.position, doors[j].transform.position) < minDistance) { minDistance = Vector3.Distance(p.transform.position, doors[j].transform.position); closestDoor = j; } } doors[closestDoor].Block(); i++; p.EnableAgent(true); } roomLoaded.Raise(); //Debug.Log("Number of monsters: " + monsters.Count + " " + GameObject.FindGameObjectsWithTag("Monster").Length); }