예제 #1
0
 void Awake()
 {
     numberOfCavesPerWorldChunk = Random.Range(3, 16);
     caveVoidPoints             = new Vector3[numberOfCavesPerWorldChunk, maxCaveLength];
     for (int i = 0; i < numberOfCavesPerWorldChunk; i++)
     {
         generateCave(i);
     }
     generateLandscape = this.gameObject.GetComponent <GenerateLandscape> ();
     generateLandscape.generateCaves(caveVoidPoints, radius);
 }
 // Use this for initialization
 void Start()
 {
     //player = transform;
     generateLandscape = gameManager.GetComponent <GenerateLandscape>();
     worldBlocks       = GenerateLandscape.worldBlocks;
 }
예제 #3
0
    private void Start()
    {
        s = this;

        terrainWidth = terrainBound.transform.position.x;
        if (displayTrees)
        {
            for (int i = 0; i < numTrees; i++)
            {
                float   xPos       = Random.Range(0, terrainWidth);
                float   zPos       = Random.Range(0, terrainWidth);
                Vector3 treePos    = new Vector3(xPos, 0, zPos);
                float   treeHeight = terrain.SampleHeight(treePos);
                treePos.y = treeHeight - 1;
                GameObject newTree = Instantiate(tree);
                newTree.transform.Rotate(0, Random.Range(0, 360), 0);
                newTree.transform.position = treePos;
            }
        }


        if (displayFlowers)
        {
            for (int i = 0; i < numFlowers; i++)
            {
                float   xPos         = Random.Range(200, 300);
                float   zPos         = Random.Range(70, 220);
                Vector3 flowerPos    = new Vector3(xPos, 0, zPos);
                float   flowerHeight = terrain.SampleHeight(flowerPos);
                flowerPos.y = flowerHeight;
                GameObject newTree = Instantiate(flowers[Random.Range(0, flowers.Count)]);
                newTree.transform.position = flowerPos;
            }
        }

        if (displayGrass)
        {
            for (int i = 0; i < numGrass; i++)
            {
                float   xPos        = Random.Range(200, 400);
                float   zPos        = Random.Range(70, 220);
                Vector3 grassPos    = new Vector3(xPos, 0, zPos);
                float   grassHeight = terrain.SampleHeight(grassPos);
                grassPos.y = grassHeight;
                GameObject newGrass = Instantiate(grass);
                newGrass.transform.localScale = new Vector3(10, 8, 10);
                newGrass.transform.Rotate(0, Random.Range(0, 360), 0);
                newGrass.transform.position = grassPos;

                int clusterNum = Random.Range(0, 10);
                // Maybe make this recursive
                for (int j = 0; j < clusterNum; j++)
                {
                    float xOffset = Random.Range(-2f, 2f);
                    float zOffset = Random.Range(-2f, 2f);

                    GameObject newGrass1 = Instantiate(grass);
                    //newGrass.transform.eulerAngles = new Vector3(0, Random.Range(0, 180), 90);
                    newGrass1.transform.Rotate(0, Random.Range(0, 360), 0);
                    newGrass1.transform.localScale = new Vector3(8, 7, 8);

                    Vector3 newGrassPos = new Vector3(grassPos.x + xOffset, grassPos.y, grassPos.z + zOffset);
                    newGrassPos.y = terrain.SampleHeight(newGrassPos);
                    newGrass1.transform.position = newGrassPos;

                    numGrass--;
                }
            }
        }

        if (displayStones)
        {
            for (int i = 0; i < numStones; i++)
            {
                float   xPos        = Random.Range(200, 400);
                float   zPos        = Random.Range(70, 220);
                Vector3 stonePos    = new Vector3(xPos, 0, zPos);
                float   stoneHeight = terrain.SampleHeight(stonePos);
                stonePos.y = stoneHeight - 0.1f;
                GameObject newStone = Instantiate(stone);
                newStone.transform.position = stonePos;
            }
        }
    }