| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- using UnityEngine;
- using System.Collections;
- public class MapDisplay : MonoBehaviour {
- public Renderer textureRender;
- public MeshFilter meshFilter;
- public MeshRenderer meshRenderer;
- public void DrawTexture(Texture2D texture) {
- textureRender.sharedMaterial.mainTexture = texture;
- textureRender.transform.localScale = new Vector3 (texture.width, 1, texture.height);
- }
- public void DrawMesh(MeshData meshData) {
- meshFilter.sharedMesh = meshData.CreateMesh ();
- meshFilter.transform.localScale = Vector3.one * FindFirstObjectByType<MapGenerator> ().terrainData.uniformScale;
- ApplyVertexColors(meshFilter.sharedMesh);
- }
- void ApplyVertexColors(Mesh mesh)
- {
- Vector3[] vertices = mesh.vertices;
- Color[] colors = new Color[vertices.Length];
- float maxH = 25f;
- for (int i = 0; i < vertices.Length; i++)
- {
-
- float heightPercent = Mathf.InverseLerp(0, maxH, vertices[i].y);
- // --- THE BIOME LAYERS ---
- if (heightPercent < 0.05f)
- {
- colors[i] = new Color(0.1f, 0.3f, 0.6f); // Deep Water (Dark Blue)
- }
- else if (heightPercent < 0.12f)
- {
- colors[i] = new Color(0.9f, 0.8f, 0.6f); // Sand/Beach (Tan)
- }
- else if (heightPercent < 0.45f)
- {
- colors[i] = new Color(0.2f, 0.5f, 0.1f); // Grass (Rich Green)
- }
- else if (heightPercent < 0.65f)
- {
- colors[i] = new Color(0.4f, 0.35f, 0.3f); // Rock Color 1 (Brown-Grey)
- }
- else if (heightPercent < 0.85f)
- {
- colors[i] = new Color(0.3f, 0.3f, 0.3f); // Rock Color 2 (Dark Grey)
- }
- else
- {
- colors[i] = Color.white; // Snow (White)
- }
- }
- mesh.colors = colors;
- }
- }
|