private void GenerateGrid() { int LastFLadder = -1; // Last row 1st ladder location int LastSLadder = -1; // Last row 2nd ladder location int NewLadder = -1; for (int row = 0; row < rows; row++) { GameObject LeftRoom = (GameObject)Instantiate(LeftRoomPrefab, transform); GameObject MiddleRoom = (GameObject)Instantiate(MiddleRoomPrefab, transform); GameObject RightRoom = (GameObject)Instantiate(RightRoomPrefab, transform); RoomController LeftRoomController = LeftRoom.GetComponent <RoomController>(); RoomController MidRoomController = MiddleRoom.GetComponent <RoomController>(); RoomController RightRoomController = RightRoom.GetComponent <RoomController>(); LeftRoom.transform.position = new Vector2(0 * tileSizeX, row * -tileSizeY); LeftRoomController.Y = row; LeftRoomController.X = 0; LeftRoom.name = 0 + "" + row; MiddleRoom.transform.position = new Vector2(1 * tileSizeX, row * -tileSizeY); MidRoomController.Y = row; MidRoomController.X = 1; MiddleRoom.name = 1 + "" + row; RightRoom.transform.position = new Vector2(2 * tileSizeX, row * -tileSizeY); RightRoomController.Y = row; RightRoomController.X = 2; RightRoom.name = 2 + "" + row; if (row == 0) { LeftRoomController.isClear = true; Character.transform.position = CharacterController.NewPositionCharacter(LeftRoom); CharacterController.curPosition = Character.transform.position; } #region Ladder create LastSLadder = NewLadder; // Connect with 2nd ladder from previous room NewLadder = UnityEngine.Random.Range(0, 3); // Random new ladder location if (NewLadder == LastFLadder) { GameObject LastDownLadderObject = GameObject.Find(LastSLadder + "" + (row - 1) + "d"); LastSLadder = LastFLadder; GameObject LastUpLadderObject = null; if (LastDownLadderObject != null) { Destroy(LastDownLadderObject); // Destroy last row 2nd ladder LastUpLadderObject = GameObject.Find(LastFLadder + "" + (row - 1) + "u"); if (LastUpLadderObject != null) { LastUpLadderObject.name = LastFLadder + "" + (row - 1) + "b"; // Change last row 1st ladder name } } } GameObject Ladder1 = null; GameObject Ladder2 = null; if (row != 0) { Ladder1 = (GameObject)Instantiate(LadderPrefab, transform); } if (NewLadder != LastSLadder && row != rows - 1) { Ladder2 = (GameObject)Instantiate(LadderPrefab, transform);; // Destroy if new ladder same room with connect ladder } if (Ladder1 != null) { Ladder1.transform.SetParent(GameObject.Find(LastSLadder + "" + row).transform); Ladder1.transform.position = Vector3.Scale(new Vector3(0, 0, 0), new Vector3(1.2f, 1.2f, 0)) + Ladder1.transform.parent.transform.position; Ladder1.name = LastSLadder + "" + row + "u"; if (Ladder2 == null) { Ladder1.name = LastSLadder + "" + row + "b"; } } if (Ladder2 != null) { Ladder2.transform.SetParent(GameObject.Find(NewLadder + "" + row).transform); Ladder2.name = NewLadder + "" + row + "d"; Ladder2.transform.position = Vector3.Scale(new Vector3(0, 0, 0), new Vector3(1.2f, 1.2f, 0)) + Ladder2.transform.parent.transform.position; } LastFLadder = LastSLadder; #endregion } }