Exemple #1
0
    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);
    }
Exemple #2
0
    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);
    }