public void GenerateMap() { foreach (Transform childTransform in transform) { Destroy(childTransform.gameObject); } GenerateMapArrayFromLevelData(); int numSquares = Squares_X * Squares_Y; int numVerts = 4 * numSquares; int numTriPoints = 6 * numSquares; Vector3[] verts = new Vector3[numVerts]; Vector3[] normals = new Vector3[numVerts]; Vector2[] uv = new Vector2[numVerts]; int[] tris = new int[numTriPoints]; Vector3 towardCamera = new Vector3(0, 0, -1f); int squareNum = 0; for (int y = 0; y < Squares_Y; y++) { for (int x = 0; x < Squares_X; x++) { verts[squareNum * 4] = new Vector3(x * Square_Size, /*(Squares_Y*Square_Size) -*/ y * Square_Size, 0.0f); verts[squareNum * 4 + 1] = new Vector3((x + 1) * Square_Size, /*(Squares_Y*Square_Size) -*/ y * Square_Size, 0.0f); verts[squareNum * 4 + 2] = new Vector3(x * Square_Size, /*(Squares_Y*Square_Size) -*/ (y + 1) * Square_Size, 0.0f); verts[squareNum * 4 + 3] = new Vector3((x + 1) * Square_Size, /*(Squares_Y*Square_Size) -*/ (y + 1) * Square_Size, 0.0f); tris[squareNum * 6] = squareNum * 4; tris[squareNum * 6 + 1] = squareNum * 4 + 2; tris[squareNum * 6 + 2] = squareNum * 4 + 1; tris[squareNum * 6 + 3] = squareNum * 4 + 1; tris[squareNum * 6 + 4] = squareNum * 4 + 2; tris[squareNum * 6 + 5] = squareNum * 4 + 3; normals[squareNum * 4] = towardCamera; normals[squareNum * 4 + 1] = towardCamera; normals[squareNum * 4 + 2] = towardCamera; normals[squareNum * 4 + 3] = towardCamera; SetSquareTexCoords(uv, squareNum, MapArray[x, y].TextureNum); /*if (MapArray[x, y].IsWall) * { * GameObject go = new GameObject(); * go.name = "Collider_("+x+","+y+")"; * BoxCollider2D boxcoll = go.AddComponent<BoxCollider2D>(); * boxcoll.size = new Vector2(Square_Size,Square_Size); * boxcoll.center= new Vector2((x+0.5f)*Square_Size, (y+0.5f)*Square_Size); * go.transform.position = transform.position; * go.transform.rotation = transform.rotation; * go.transform.localScale = transform.lossyScale; * go.transform.parent = transform; * }*/ squareNum++; } } GenerateColliders(); Mesh mesh = new Mesh(); mesh.vertices = verts; mesh.triangles = tris; mesh.normals = normals; mesh.uv = uv; GetComponent <MeshFilter>().mesh = mesh; pathfinder = new PathfindingImpl(Squares_X, Squares_Y, CollideAtGrid); }
public void GenerateMap() { foreach (Transform childTransform in transform) Destroy(childTransform.gameObject); GenerateMapArrayFromLevelData(); int numSquares = Squares_X * Squares_Y; int numVerts = 4 * numSquares; int numTriPoints = 6 * numSquares; Vector3[] verts = new Vector3[numVerts]; Vector3[] normals = new Vector3[numVerts]; Vector2[] uv = new Vector2[numVerts]; int[] tris = new int[numTriPoints]; Vector3 towardCamera = new Vector3(0,0,-1f); int squareNum = 0; for(int y = 0; y < Squares_Y; y++) { for(int x = 0; x < Squares_X; x++) { verts[squareNum*4 ] = new Vector3(x*Square_Size, /*(Squares_Y*Square_Size) -*/ y*Square_Size, 0.0f); verts[squareNum*4+1] = new Vector3((x+1)*Square_Size, /*(Squares_Y*Square_Size) -*/ y*Square_Size, 0.0f); verts[squareNum*4+2] = new Vector3(x*Square_Size, /*(Squares_Y*Square_Size) -*/ (y+1)*Square_Size, 0.0f); verts[squareNum*4+3] = new Vector3((x+1)*Square_Size, /*(Squares_Y*Square_Size) -*/ (y+1)*Square_Size, 0.0f); tris[squareNum*6 ] = squareNum*4; tris[squareNum*6+1] = squareNum*4+2; tris[squareNum*6+2] = squareNum*4+1; tris[squareNum*6+3] = squareNum*4+1; tris[squareNum*6+4] = squareNum*4+2; tris[squareNum*6+5] = squareNum*4+3; normals[squareNum*4 ] = towardCamera; normals[squareNum*4+1] = towardCamera; normals[squareNum*4+2] = towardCamera; normals[squareNum*4+3] = towardCamera; SetSquareTexCoords(uv, squareNum, MapArray[x, y].TextureNum); /*if (MapArray[x, y].IsWall) { GameObject go = new GameObject(); go.name = "Collider_("+x+","+y+")"; BoxCollider2D boxcoll = go.AddComponent<BoxCollider2D>(); boxcoll.size = new Vector2(Square_Size,Square_Size); boxcoll.center= new Vector2((x+0.5f)*Square_Size, (y+0.5f)*Square_Size); go.transform.position = transform.position; go.transform.rotation = transform.rotation; go.transform.localScale = transform.lossyScale; go.transform.parent = transform; }*/ squareNum++; } } GenerateColliders(); Mesh mesh = new Mesh(); mesh.vertices = verts; mesh.triangles = tris; mesh.normals = normals; mesh.uv = uv; GetComponent<MeshFilter>().mesh = mesh; pathfinder = new PathfindingImpl(Squares_X, Squares_Y, CollideAtGrid); }