public void removeUnselected() { Generator.Data.infoText = "Remover salas não elegíveis: " + Text[2]; GameObject[] objs = GameObject.FindGameObjectsWithTag("Root"); foreach (GameObject obj in objs) { RootCreator root = obj.gameObject.GetComponent <RootCreator>(); if (!root.selected) { Destroy(obj.gameObject); } } }
public IEnumerator Populate() { GameObject[] objs = GameObject.FindGameObjectsWithTag("Root"); foreach (GameObject sala in objs) { RootCreator root = sala.gameObject.GetComponent <RootCreator>(); if (!root.spawnPoint) { // TIPO DE SALA int ran = Random.Range(1, 3); switch (ran) { case 1: //inimigo cobra int dom = Random.Range(2, 30); //numero de cobras for (int i = 0; i < dom; i++) { int posX = Random.Range((-root.sizeX) + 1, root.sizeX - 1); int posY = Random.Range((-root.sizeY) + 1, root.sizeY - 1); Generator.Spawn(Generator.Data.inimigo_cobra, new Vector3(sala.transform.position.x + posX, sala.transform.position.y + posY), Quaternion.identity); Generator.Data.enemiesToKill++; } break; case 2: //inimigo golem int ram = Random.Range(1, 10); //numero de cobras for (int i = 0; i < ram; i++) { int posX = Random.Range((-root.sizeX) + 1, root.sizeX - 1); int posY = Random.Range((-root.sizeY) + 1, root.sizeY - 1); Generator.Spawn(Generator.Data.inimigo_golem, new Vector3(sala.transform.position.x + posX, sala.transform.position.y + posY), Quaternion.identity); Generator.Data.enemiesToKill++; } break; case 3: //chefe break; } } yield return(null); } }
public void SelectMain() { Generator.Data.infoText = "Escolher salas elegíveis: " + Text[1]; GameObject[] objs = GameObject.FindGameObjectsWithTag("Root"); foreach (GameObject obj in objs) { RootCreator root = obj.gameObject.GetComponent <RootCreator>(); if (root.sizeX * root.sizeY > 10) { root.selected = true; TileScript[] tiles = obj.GetComponentsInChildren <TileScript>(); foreach (TileScript tile in tiles) { tile.gameObject.GetComponent <SpriteRenderer>().sprite = Generator.Data.tile_selected; } } } }
// Update is called once per frame void Update() { if (Generator.Data.generating) { int collisionCount = 0; GameObject[] objs = GameObject.FindGameObjectsWithTag("Root"); foreach (GameObject obj in objs) { Vector3 pos = obj.transform.position; RootCreator root = obj.gameObject.GetComponent <RootCreator>(); Vector2 pointA = new Vector2(pos.x - 0.5f - (root.sizeX * 0.8f), pos.y - 0.5f - (root.sizeY * 0.8f)); Vector2 pointB = new Vector2(pos.x - 0.5f + (root.sizeX * 0.8f), pos.y - 0.5f + (root.sizeY * 0.8f)); Collider2D[] res = Physics2D.OverlapAreaAll(pointA, pointB); if (res.Length != 0) { foreach (Collider2D coll in res) { if (coll.gameObject != obj.gameObject) { Debug.DrawLine(obj.transform.position, coll.gameObject.transform.position, Color.red); collisionCount++; } } } } if (collisionCount != 0) { text.color = Color.red; } else { text.color = Color.green; } } }
public void ReadHallWay() { GameObject[] objs = GameObject.FindGameObjectsWithTag("Root"); List <GameObject> needed = new List <GameObject>(); foreach (GameObject obj in objs) { // Procura pro outras salas ao meu redor, indicando se eu preciso ou nao de um corredor Vector3 pos = obj.transform.position; RootCreator root = obj.gameObject.GetComponent <RootCreator>(); Vector2 pointA = new Vector2(pos.x - 0.5f - (root.sizeX * 1.1f), pos.y - 0.5f - (root.sizeY * 1.1f)); Vector2 pointB = new Vector2(pos.x - 0.5f + (root.sizeX * 1.1f), pos.y - 0.5f + (root.sizeY * 1.1f)); Collider2D[] res = Physics2D.OverlapAreaAll(pointA, pointB); int numberOfIntersections = 0; // Se eu precisar de um corredor foreach (Collider2D coll in res) { if (coll.gameObject != obj.gameObject) { numberOfIntersections++; } } if (numberOfIntersections == 0) { needed.Add(obj); } } foreach (GameObject need in needed) { GameObject nearest = getNearestRoom(need, objs); Debug.DrawLine(need.transform.position, nearest.transform.position, Color.black, 10); } }