Random Mesh creation

Hello all,

I was looking for random mesh generators, and found a Heightmap mesh generator from grayscale az offical Unity tutorials. So i replaced the grayscale vaules with random floats. Now my problame is, that I want only one height in one x axes “line” and I don’t understand that script. Can anyobody help me? The code is the following:

// This script is placed in public domain. The author takes no responsibility for any possible harm.
var material : Material;
var size : Vector3;

function Start ()
{
	GenerateHeightmap();
}

function GenerateHeightmap ()
{
	size = Vector3(50,30,200);
	// Create the game object containing the renderer
	gameObject.AddComponent(MeshFilter);
	gameObject.AddComponent("MeshRenderer");
	if (material)
		renderer.material = material;
	else
		renderer.material.color = Color.white;

	// Retrieve a mesh instance
	var mesh : Mesh = GetComponent(MeshFilter).mesh;

	var width : int = 50;
	var height : int = 255;
	var y = 0;
	var x = 0;

	// Build vertices and UVs
	var vertices = new Vector3[height * width];
	var uv = new Vector2[height * width];
	var tangents = new Vector4[height * width];
	
	var uvScale = Vector2 (1.0 / (width - 1), 1.0 / (height - 1));
	var sizeScale = Vector3 (size.x / (width - 1), size.y, size.z / (height - 1));
	
	for (y=0;y<height;y++)
	{
		for (x=0;x<width;x++)
		{
			var pixelHeight = Random.Range(0.0, 1);
			var vertex = Vector3 (x, pixelHeight, y);
			vertices[y*width + x] = Vector3.Scale(sizeScale, vertex);
			uv[y*width + x] = Vector2.Scale(Vector2 (x, y), uvScale);

			// Calculate tangent vector: a vector that goes from previous vertex
			// to next along X direction. We need tangents if we intend to
			// use bumpmap shaders on the mesh.
			var vertexL = Vector3( x-1, Random.Range(0.1, 1), y );
			var vertexR = Vector3( x+1, Random.Range(0.1, 1), y );
			var tan = Vector3.Scale( sizeScale, vertexR - vertexL ).normalized;
			
			tangents[y*width + x] = Vector4( tan.x, tan.y, tan.z, -1.0 );
		}
	}
	
	// Assign them to the mesh
	mesh.vertices = vertices;
	mesh.uv = uv;

	// Build triangle indices: 3 indices into vertex array for each triangle
	var triangles = new int[(height - 1) * (width - 1) * 6];
	var index = 0;
	for (y=0;y<height-1;y++)
	{
		for (x=0;x<width-1;x++)
		{
			// For each grid cell output two triangles
			triangles[index++] = (y     * width) + x;
			triangles[index++] = ((y+1) * width) + x;
			triangles[index++] = (y     * width) + x + 1;

			triangles[index++] = ((y+1) * width) + x;
			triangles[index++] = ((y+1) * width) + x + 1;
			triangles[index++] = (y     * width) + x + 1;
		}
	}
	// And assign them to the mesh
	mesh.triangles = triangles;
		
	// Auto-calculate vertex normals from the mesh
	mesh.RecalculateNormals();
	
	// Assign tangents after recalculating normals
	mesh.tangents = tangents;
}

Your problem is you dont understand the code you use, bad practice for any programmer. But to say something more helpful:

Calculate the height not for every x and y but only at each x or each y:

for (y=0;y<height;y++)
{
  for (x=0;x<width;x++)[FONT=Helvetica]
  {
    ..
  }
}
[/FONT]

Flip the both for statements and calculate only once between those two your height, then set it normaly.

I already tried it, but I got an Array index is out of range exeption… :S