public override void Generate() { if (houses == null || houses.Length == 0) { return; } int amountOfHouses = 4; float dimX = dimensions.x / amountOfHouses; float dimZ = dimensions.y / amountOfHouses; for (int x = 0; x < amountOfHouses; x++) { for (int z = 0; z < amountOfHouses; z++) { Vector3 pos = position; pos.x += x * dimX * units.x; pos.z += z * dimZ * units.z; HouseGenerator generator = Create <HouseGenerator>(pos); //new Vector3(pos.x * units.x, pos.y * units.y, pos.z * units.z)); generator.position = pos; generator.scale = 1; generator.dimensions.x = dimX; generator.dimensions.y = Random.Range(minHouseDimensions.y, maxHouseDimensions.y); generator.dimensions.z = dimZ; generator.houseTiles = houses[Random.Range(0, houses.Length)]; generator.Generate(); } } }
public void Test() { map = map ?? GetComponent <Tilemap>() ?? gameObject.AddComponent <Tilemap>(); HouseGenerator generator = new HouseGenerator(HouseSize.x, HouseSize.y); generator.Generate(); (Queue <Rect> Rooms, Queue <Rect> Halls, Rect House) = generator.Drawables(); foreach (Rect Hall in Halls) { for (int x = Hall.l; x <= Hall.r; ++x) { for (int y = Hall.t; y <= Hall.b; ++y) { map.SetTile(new Vector3Int(x, y, 0), hall); } } } foreach (Rect Room in Rooms) { for (int x = Room.l + 1; x <= Room.r - 1; ++x) { for (int y = Room.t + 1; y <= Room.b - 1; ++y) { map.SetTile(new Vector3Int(x, y, 0), room); } } foreach (Vector3Int v in Room.Edge()) { map.SetTile(v, wall); } } foreach (Vector3Int v in House.Edge()) { map.SetTile(v, wall); } }