// Use this for initialization public void GenerateMap(int columns, int rows, int minMagnitude, int ballAmount, float ballSpeed, float playerSpeed) { _balls = new List <Ball>(); _list = new ColumnContainer[columns]; for (int i = 0; i < columns; i++) { _list[i] = new ColumnContainer(); } for (int i = 0; i < ballAmount; i++) { _balls.Add(Instantiate(_ballPrefab).GetComponent <Ball>()); _balls[i].speed = ballSpeed; } _player = Instantiate(_playerPrefab).GetComponent <PlayerMove>(); _player.speed = playerSpeed; float[] rots = Arc.ArcRotations(columns, -1.0f, 0.0f, false); Vector2[] locs; for (int i = 0; i < rows; i++) { locs = Arc.ArcLocations(columns, -1.0f, 0.0f, i + minMagnitude, false); for (int j = 0; j < columns; j++) { _list[j].Add(Instantiate(_brickPrefab)); _list[j][i].transform.Rotate(new Vector3(0, 0, -rots[j]) * 360); _list[j][i].transform.position = locs[j]; Brick brick = _list[j][i].GetComponent <Brick>(); brick.myContainer = _list[j]; brick.Reshape(columns, i + minMagnitude); brick.breakable = true; } } locs = Arc.ArcLocations(columns, -1.0f, 0.0f, rows + minMagnitude, false); for (int j = 0; j < columns; j++) { _list[j].Add(Instantiate(_brickPrefab)); _list[j][rows].transform.Rotate(new Vector3(0, 0, -rots[j]) * 360); _list[j][rows].transform.position = locs[j]; Brick brick = _list[j][rows].GetComponent <Brick>(); brick.myContainer = _list[j]; brick.Reshape(columns, rows + minMagnitude); brick.breakable = false; } }
public void Reshape(int columns, float magnitude) { Vector2[] inner = Arc.ArcLocations(columns, -1.0f, 0.0f, magnitude, false); Vector2[] outer = Arc.ArcLocations(columns, -1.0f, 0.0f, magnitude + 1, false); PolygonCollider2D polygonCollider2d = GetComponent <PolygonCollider2D>(); Vector3[] Vertices = { new Vector3(0, 0, 0), //left inner new Vector3(0, 1, 0), //left outer new Vector3(outer[1].x - inner[0].x, outer[1].y - inner[0].y, 0), //right outer new Vector3(inner[1].x - inner[0].x, inner[1].y - inner[0].y, 0) //right inner }; int[] Triangles = { 0, 1, 2, 0, 2, 3 }; Mesh mesh = new Mesh(); mesh.vertices = Vertices; mesh.triangles = Triangles; mesh.RecalculateNormals(); gameObject.GetComponent <MeshFilter>().mesh = mesh; Vector2[] path = { new Vector2(0, 0), //left inner new Vector2(0, 1), //left outer outer[1] - inner[0], //right outer inner[1] - inner[0] //right inner }; polygonCollider2d.enabled = false; polygonCollider2d.pathCount = 1; polygonCollider2d.SetPath(0, path); //polygonCollider2d.offset = new Vector2(-0.5f, -0.5f); polygonCollider2d.enabled = true; }