Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static GameObject GenerateOne(Texture2D tex, int sizeX, int sizeY)
- {
- //Generate Table 20x20
- int[,] tab = new int[sizeY, sizeX];
- for (int index00 = 0; index00 < tab.GetLength(0); index00++)
- for (int index01 = 0; index01 < tab.GetLength(1); index01++)
- tab[index00, index01] = Random.Range(0, 2);
- var obj = new GameObject();
- var mf = obj.AddComponent<MeshFilter>();
- obj.AddComponent<MeshRenderer>();
- var mesh = new Mesh();
- mf.mesh = mesh;
- int licznik = 0;
- foreach (var element in tab)
- {
- if (element == 1)
- licznik++;
- }
- var vertices = new Vector3[licznik * 6];
- var tri = new int[licznik * 6];
- var normals = new Vector3[licznik * 6];
- var uv = new Vector2[licznik * 6];
- licznik = 0;
- int iMax = tab.GetUpperBound(0);
- int jMax = tab.GetUpperBound(1);
- for (float i = 0; i <= tab.GetUpperBound(0); i++)
- for (float j = 0; j <= tab.GetUpperBound(1); j++)
- if (tab[(int)i, (int)j] == 1)
- {
- iMax++;
- jMax++;
- //prawa góra trójkąt
- vertices[licznik] = new Vector3(i + 1, 0, j + 1); //prawa góra
- tri[licznik] = licznik;
- normals[licznik] = new Vector3(0.5f,0,0.5f);
- uv[licznik++] = new Vector2((i + 1) / iMax, (j + 1) / jMax);
- vertices[licznik] = new Vector3(i + 1, 0, j); //prawa dół
- tri[licznik] = licznik;
- normals[licznik] = new Vector3(0.5f, 0, -0.5f);
- uv[licznik++] = new Vector2((i + 1) / iMax, (j) / jMax);
- vertices[licznik] = new Vector3(i, 0, j + 1); //lewa góra
- tri[licznik] = licznik;
- normals[licznik] = new Vector3(-0.5f, 0, 0.5f);
- uv[licznik++] = new Vector2((i) / iMax, (j + 1) / jMax);
- //lewy dół trójkąt
- vertices[licznik] = new Vector3(i + 1, 0, j); //prawa dół
- tri[licznik] = licznik;
- normals[licznik] = -Vector3.forward;
- uv[licznik++] = new Vector2((i + 1) / iMax, (j) / jMax);
- vertices[licznik] = new Vector3(i, 0, j); //lewa dół
- tri[licznik] = licznik;
- normals[licznik] = new Vector3(0.5f, 0, 0.5f);
- uv[licznik++] = new Vector2((i) / iMax, (j) / jMax);
- vertices[licznik] = new Vector3(i, 0, j + 1); // lewa góra
- tri[licznik] = licznik;
- normals[licznik] = new Vector3(-0.5f, 0, 0.5f);
- uv[licznik++] = new Vector2((i) / iMax, (j + 1) / jMax);
- iMax--;
- jMax--;
- }
- mesh.vertices = vertices;
- mesh.triangles = tri;
- mesh.normals = normals;
- mesh.uv = uv;
- var coll = obj.AddComponent<BoxCollider>();
- coll.size = new Vector3(coll.size.x, 0.2f, coll.size.z);
- coll.center = new Vector3(coll.center.x, -0.1f, coll.center.z);
- obj.renderer.material.mainTexture = tex;
- return obj;
- }
- public static GameObject GenerateMany(Texture2D tex, int sizeX, int sizeY)
- {
- //Generate Table 20x20
- int[,] tab = new int[sizeY, sizeX];
- for (int index00 = 0; index00 < tab.GetLength(0); index00++)
- for (int index01 = 0; index01 < tab.GetLength(1); index01++)
- tab[index00, index01] = Random.Range(0, 2);
- var obj = new GameObject();
- var mf = obj.AddComponent<MeshFilter>();
- obj.AddComponent<MeshRenderer>();
- var mesh = new Mesh();
- mf.mesh = mesh;
- int licznik = 0;
- foreach (var element in tab)
- {
- if (element == 1)
- licznik++;
- }
- var vertices = new Vector3[licznik * 6];
- var tri = new int[licznik * 6];
- var uv = new Vector2[licznik * 6];
- licznik = 0;
- for (int i = 0; i <= tab.GetUpperBound(0); i++)
- for (int j = 0; j <= tab.GetUpperBound(1); j++)
- if (tab[i, j] == 1)
- {
- vertices[licznik] = new Vector3(i + 1, 0, j + 1);
- tri[licznik] = licznik;
- uv[licznik++] = new Vector2(1, 1);
- vertices[licznik] = new Vector3(i + 1, 0, j);
- tri[licznik] = licznik;
- uv[licznik++] = new Vector2(1, 0);
- vertices[licznik] = new Vector3(i, 0, j + 1);
- tri[licznik] = licznik;
- uv[licznik++] = new Vector2(0, 1);
- vertices[licznik] = new Vector3(i + 1, 0, j);
- tri[licznik] = licznik;
- uv[licznik++] = new Vector2(1, 0);
- vertices[licznik] = new Vector3(i, 0, j);
- tri[licznik] = licznik;
- uv[licznik++] = new Vector2(0, 0);
- vertices[licznik] = new Vector3(i, 0, j + 1);
- tri[licznik] = licznik;
- uv[licznik++] = new Vector2(0, 1);
- }
- mesh.vertices = vertices;
- mesh.triangles = tri;
- mesh.uv = uv;
- var coll = obj.AddComponent<BoxCollider>();
- coll.size = new Vector3(coll.size.x, 0.2f, coll.size.z);
- coll.center = new Vector3(coll.center.x, -0.1f, coll.center.z);
- obj.renderer.material.mainTexture = tex;
- return obj;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement