I don’t means minecraft-like game. Just i want to know how to build a cube or sth using scripts. As example this code:
var material : Material;
var xe : int = 255;
var ye : int = 255;
var size = Vector3(255, 0, 255);
function Update ()
{
CreateMeABox();
}
function CreateMeABox()
{
gameObject.AddComponent(MeshFilter);
gameObject.AddComponent("MeshRenderer");
renderer.material = material;
var mesh : Mesh = GetComponent(MeshFilter).mesh;
var vertices = new Vector3[xe * ye];
var uv = new Vector2[xe * ye];
var tangents = new Vector4[ye * xe];
var uvScale = Vector2 (1.0 / (xe - 1), 1.0 / (ye - 1));
var sizeScale = Vector3 (size.x / (xe - 1), size.y, size.z / (ye - 1));
for(var y = 0; y < ye; y++)
{
for(var x = 0; x < xe; x++)
{
var vertex = Vector3(x, Mathf.PerlinNoise(x*Time.time*0.0001,y*Time.time*0.0001)*500, y);
vertices[y*xe + x] = Vector3.Scale(Vector3(1.0,1.0,1.0), vertex);
uv[y*xe + x] = Vector2.Scale(Vector2 (x, y), uvScale);
var vertexL = Vector3( x-1, x*y*Time.time*0.0001, y );
var vertexR = Vector3( x+1, x*y*Time.time*0.0001, y );
var tan = Vector3.Scale( sizeScale, vertexR - vertexL ).normalized;
tangents[y*xe + x] = Vector4( tan.x, tan.y, tan.z, -1.0 );
}
}
mesh.vertices = vertices;
mesh.uv = uv;
var triangles = new int[(ye - 1) * (xe - 1) * 6];
var index = 0;
for (y=0;y<ye-1;y++)
{
for (x=0;x<xe-1;x++)
{
triangles[index++] = (y * xe) + x;
triangles[index++] = ((y+1) * xe) + x;
triangles[index++] = (y * xe) + x + 1;
triangles[index++] = ((y+1) * xe) + x;
triangles[index++] = ((y+1) * xe) + x + 1;
triangles[index++] = (y * xe) + x + 1;
}
}
mesh.triangles = triangles;
mesh.RecalculateNormals();
mesh.tangents = tangents;
}
It isn’t cube, it’s a plane modifying by Perlin Noise.
This code isn’t best, but it works. For these who want to use it:
- Attach to empty game object
- Set size (not bigger than 255x255) and material.
- … and don’t use to many of them. It is not the best code (slow).
And i ask again:
How to build an object using coordinates?
If you see that post firstly, please go down a little.