コード例 #1
0
    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();
            }
        }
    }
コード例 #2
0
    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);
        }
    }