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(); }
/// <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); }