private void InitializeGrid(Shader shader, int width, int height, Gem gemPrefab, int gemSize, int spaceBetweenGems) { Vector2 gemShift = new Vector2((gemSize + spaceBetweenGems) * (width - 1) / 2f, (gemSize + spaceBetweenGems) * (height - 1) / 2f); GameObject bottom = new GameObject("Bottom"); bottom.transform.SetParent(transform, false); bottom.transform.localPosition = new Vector3(0f, -(gemShift.y + gemSize / 2f), 0f); top = -bottom.transform.localPosition.y; BoxCollider bottomCollider = bottom.AddComponent <BoxCollider>(); bottomCollider.size = new Vector3(gemShift.x * 2f + gemSize, 0f, gemSize); for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { Gem gemObj = Instantiate(gemPrefab, new Vector3((gemSize + spaceBetweenGems) * x, (gemSize + spaceBetweenGems) * y, 0f), Quaternion.identity); gemObj.transform.SetParent(transform, false); gemObj.transform.localPosition -= new Vector3(gemShift.x, gemShift.y, 0f); gemObj.Init(this, gemSize, shader); gemObj.CreateMarkers(spaceBetweenGems); gems.Add(gemObj); } } }