[SOLVED] Procedural Poly Terrain not generating everything
This is my first time making a randomly generated terrain system with a mesh instead of the actual terrain thats already in Unity itself. I keeo having this problem where it only does 1 row of terrain then stops, instead of moving onto the next row.
Any help?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TerrainGeneration : MonoBehaviour {
private Mesh mesh;
public bool DrawGizmosEnabled;
public int MapSizeX, MapSizeZ;
public int MapSizeMultiplier;
public float GizmoSize;
public List<Vector3> vertices;
public List<int> triangles;
public List<Vector2> uvs;
void Start () {
List<Vector3> vertices = new List<Vector3>();
GenerateTer ();
}
private void OnDrawGizmos () {
if (DrawGizmosEnabled == true) {
Gizmos.color = Color.green;
for (int i = 0; i < vertices.Count; i++) {
Gizmos.DrawSphere (vertices[i], GizmoSize);
}
}
}
void GenerateTer () {
for (int SizeX = 0; SizeX < MapSizeX; SizeX++) {
for (int SizeZ = 0; SizeZ < MapSizeZ; SizeZ++) {
float MapHeight = Random.Range (0, 2.01f);
if (SizeX == 0 || SizeZ == 0 || SizeX == MapSizeX - 1 || SizeZ == MapSizeZ - 1) {
Vector3 position = new Vector3 (SizeX * MapSizeMultiplier, 0, SizeZ * MapSizeMultiplier);
vertices.Add (position);
} else {
Vector3 position = new Vector3 (SizeX * MapSizeMultiplier, MapHeight, SizeZ * MapSizeMultiplier);
vertices.Add (position);
}
}
}
Vector3[] Vert = new Vector3[vertices.Count];
for (int i = 0; i < vertices.Count; i++) {
Vert[i] = new Vector3(vertices[i].x, vertices[i].y, vertices[i].z);
}
for (int i = 0; i < MapSizeX - 1; i++) {
for (int v = 0; v < (MapSizeZ + MapSizeX); v++) {
triangles.Add (i);
triangles.Add (i + 1);
triangles.Add (MapSizeX + i);
triangles.Add (MapSizeX + i);
triangles.Add (i + 1);
triangles.Add (MapSizeX + i + 1);
}
}
Debug.Log ("Vert Count: " + Vert.Length);
GetComponent<MeshFilter>().mesh = mesh = new Mesh();
mesh.name = "Procedural Terrain Mesh";
mesh.vertices = Vert;
mesh.triangles = triangles.ToArray();
mesh.uv = uvs.ToArray();
mesh.RecalculateBounds ();
mesh.RecalculateNormals ();
}
}
bandicam-2017-10-07-01-25-32-095.jpg
(45.1 kB)
bandicam-2017-10-07-01-24-37-890.jpg
(45.6 kB)
Comment