Esempio n. 1
0
    public void Generate()
    {
        Kill();

        int size = (int)Mathf.Sqrt(number);

        for (int i = 0; i < size; ++i)
        {
            for (int j = 0; j < size; ++j)
            {
                GameObject story = new GameObject();
                story.transform.SetParent(transform);
                story.name = "roof_" + i + "," + j;
                story.transform.position = new Vector3(i * 1.1f, 0, j * 1.1f);

                GameObject obj = Instantiate(clone, new Vector3(i * 2, 0, j * 2), Quaternion.identity);
                obj.transform.SetParent(story.transform);

                RoofGenerator g = obj.GetComponent <RoofGenerator>();
                g.height     = Random.Range(0.5f, 2f);
                g.semiHeight = Random.Range(0.5f, g.height);

                g.xSizeA = Random.Range(0.5f, 1.6f);
                g.xSizeB = Random.Range(0.5f, g.xSizeA);

                g.zSizeA = Random.Range(0.5f, 1.6f);
                g.zSizeB = Random.Range(0.5f, g.zSizeA);

                g.topSize = Random.Range(0f, g.zSizeB);

                g.GenerateRoof();
            }
        }
    }
Esempio n. 2
0
    public void Build()
    {
        DestroyHouse();

        int        Storeys = Random.Range(minPieces, maxPieces);
        float      height  = .0f;
        GameObject clone;

        //Objects.transform.localScale = new Vector3(Objects.transform.localScale.x, 0.5f, Objects.transform.localScale.z);

        clone   = SpawnObject(Objects);
        height += clone.transform.localScale.y;
        clone.transform.parent.position += new Vector3(0, height / 2, 0);
        clone.name = "Ground";
        spawnDoor(clone);
        //spawnWindow(clone);
        storeys.Add(clone);

        for (int i = 1; i < Storeys; i++)
        {
            clone   = SpawnObject(storeys[storeys.Count - 1]);
            height += clone.transform.localScale.y / 2;
            PositionShift(clone, height);
            //spawnWindow(clone);
            ComparePosition(clone, storeys[storeys.Count - 1]);
            height    += clone.transform.localScale.y / 2;
            clone.name = "Storey " + i;
            storeys.Add(clone);
        }

        GameObject roof = Instantiate(roofPrefab);

        roof.transform.position = new Vector3(clone.transform.position.x, height, clone.transform.position.z);
        roof.transform.SetParent(transform);

        RoofGenerator g = roof.GetComponent <RoofGenerator>();

        g.height     = Random.Range(0.5f, 2f);
        g.semiHeight = Random.Range(0.5f, Random.Range(0.5f, g.height));

        g.xSizeA = Random.Range(clone.transform.localScale.x + 0.05f, clone.transform.localScale.x + 0.3f);
        g.xSizeB = Random.Range(0.5f, g.xSizeA);

        g.zSizeA = Random.Range(clone.transform.localScale.z + 0.05f, clone.transform.localScale.z + 0.3f);
        g.zSizeB = Random.Range(0.5f, Random.Range(0.5f, g.zSizeA));

        g.topSize = Random.Range(0f, Random.Range(0f, g.zSizeB));

        g.GenerateRoof();
    }
    public override void OnInspectorGUI()
    {
        RoofGenerator roofGen = (RoofGenerator)target;

        if (DrawDefaultInspector())
        {
            if (roofGen.autoUpdate)
            {
                roofGen.GenerateRoof();
            }
        }

        if (GUILayout.Button("Generate"))
        {
            roofGen.GenerateRoof();
        }
    }