public void Generate() { ObjBuilder.tileSize = 10; var floor = ObjBuilder.AddNode("floorRoot", transform); int w = Random.Range(minSize, maxSize); int h = Random.Range(minSize, maxSize); ObjBuilder.AddPlane(floorPrefab, floor, w, h); var wall = ObjBuilder.AddNode("wallRoot", transform); var Nwall = ObjBuilder.AddNode("wall", wall); var gos = ObjBuilder.AddWall(wallPrefab, Nwall, w, 1); var Swall = ObjBuilder.AddNode("wall", wall); Swall.Translate(new Vector3((w + 1) * ObjBuilder.tileSize, 0, h * ObjBuilder.tileSize)); ObjBuilder.AdjFace(Swall, ObjBuilder.FaceToward.S); ObjBuilder.AddWall(wallPrefab, Swall, w, 1); var Ewall = ObjBuilder.AddNode("wall", wall); Ewall.Translate(new Vector3((w + 1) * ObjBuilder.tileSize, 0, -ObjBuilder.tileSize)); ObjBuilder.AdjFace(Ewall, ObjBuilder.FaceToward.W); ObjBuilder.AddWall(wallPrefab, Ewall, h, 1); var Wwall = ObjBuilder.AddNode("wall", wall); Wwall.Translate(ObjBuilder.tileSize, 0, (h) * ObjBuilder.tileSize); ObjBuilder.AdjFace(Wwall, ObjBuilder.FaceToward.E); ObjBuilder.AddWall(wallPrefab, Wwall, h, 1); }
public Vector3Int AddCorridor(Vector3Int pos, int width = 0, int length = 3, FaceToward face = FaceToward.S) { var corridorRoot = ObjBuilder.AddNode("Corridor", dungeonRoot, new Vector3Int((int)(pos.x), (int)(pos.z), (int)(pos.y))); var floorRoot = ObjBuilder.AddNode("Floor", corridorRoot); for (int row = 0; row < length; row++) { for (int col = -width; col <= width; col++) { AddFloor(new Vector3(col, 0, row), floorRoot); } } var wallRoot = ObjBuilder.AddNode("Wall", corridorRoot); for (int i = 0; i < length; i++) { AddWall(wallPrefab, new Vector3Int(-width, 0, i), wallRoot, FaceToward.E); AddWall(wallPrefab, new Vector3Int(width + 1, 0, i), wallRoot, FaceToward.W); } ObjBuilder.AdjFace(corridorRoot, face); switch (face) { case ObjBuilder.FaceToward.S: return(pos + Vector3Int.down * length); case ObjBuilder.FaceToward.N: return(pos + Vector3Int.up * length); case ObjBuilder.FaceToward.E: return(pos + Vector3Int.right * length); case ObjBuilder.FaceToward.W: return(pos + Vector3Int.left * length); } return(pos); }