void Start()
    {
        //Generate Planet Colors
        surfaceColor = new Color32((byte)UnityEngine.Random.Range(0, 255), (byte)UnityEngine.Random.Range(0, 255), (byte)UnityEngine.Random.Range(0, 255), 255);
        noiseColor   = new Color32((byte)UnityEngine.Random.Range(0, 255), (byte)UnityEngine.Random.Range(0, 255), (byte)UnityEngine.Random.Range(0, 255), 255);

        //Generate Terrain Texture
        int planetSize = UnityEngine.Random.Range(minPlanetSize, maxPlanetSize);

        transform.localScale = new UnityEngine.Vector3(planetSize, planetSize, 1);


        width  = planetSize * resolution + 1;
        height = planetSize * resolution + 1;
        radius = width / 2;

        scale = UnityEngine.Random.Range(5, planetSize);

        terrain = new Texture2D(width, height, TextureFormat.ARGB32, false);
        noise   = new PerlinNoise();
        Texture2D noiseMap = noise.GenerateTexture(width, height, scale);

        for (int x = 0; x < noiseMap.width; x++)
        {
            for (int y = 0; y < noiseMap.height; y++)
            {
                if (UnityEngine.Vector2.Distance(new UnityEngine.Vector2(radius, radius), new UnityEngine.Vector2(x, y)) > radius)
                {
                    terrain.SetPixel(x, y, Color.clear);
                }

                else if (noiseMap.GetPixel(x, y).r < surfaceLevel)
                {
                    terrain.SetPixel(x, y, surfaceColor);
                }

                else
                {
                    Gradient           g   = new Gradient();
                    GradientColorKey[] gck = new GradientColorKey[2];
                    GradientAlphaKey[] gak = new GradientAlphaKey[2];
                    gck[0].color = noiseColor;
                    gck[0].time  = 1.0F;
                    gck[1].color = surfaceColor;
                    gck[1].time  = -1.0F;
                    gak[0].alpha = 1.0F;
                    gak[0].time  = 1.0F;
                    gak[1].alpha = 1.0F;
                    gak[1].time  = 1.0F;
                    g.SetKeys(gck, gak);

                    terrain.SetPixel(x, y, g.Evaluate(noiseMap.GetPixel(x, y).r));
                }
            }
        }

        terrain.filterMode = FilterMode.Point;
        terrain.Apply();
        GetComponent <Renderer>().material.mainTexture = terrain;
    }
    void Start()
    {
        mesh = new Mesh();
        GetComponent <MeshFilter>().mesh = mesh;

        heightMap = PerlinNoise.GenerateTexture(256, 256, Random.Range(0, 9999), Random.Range(0, 9999), 10);

        CreateShape();
        UpdateMesh();
    }
Exemple #3
0
 /// <summary>
 /// Generates PERLIN NOISE for map generation
 /// </summary>
 private void GeneratePerlinNoiseMaps()
 {
     noiseMapHeight = PerlinNoise.GenerateTexture(MaxChunks * Chunk.WIDTH, MaxChunks * Chunk.WIDTH, seedX, seedY, 10);
     noiseMapTrees  = PerlinNoise.GenerateTexture(MaxChunks * Chunk.WIDTH, MaxChunks * Chunk.WIDTH, seedX / 2, seedY / 2, 10);
 }