private void CreateBasicGrid() { float YStep = Mathf.Sqrt(HexRadius * HexRadius - HexRadius * HexRadius / 4); float XStep = HexRadius - Mathf.Sqrt(HexRadius * HexRadius - YStep * YStep) / 2; float OddRowPush = 0.0F; int GridCorrector = 0; Vector3 GlobalCoordinates = new Vector3(0.0F, 0.0F, 0.0F); GameObject CurrentTile; System.Random Rand = new System.Random(); for (int GridX = 0; GridX < (int)GridSize.x; GridX++) { OddRowPush = (GridX % 2 == 1) ? (YStep / 2) : 0; for (int GridY = GridCorrector; GridY < (int)GridSize.y + GridCorrector; GridY++) { GlobalCoordinates.x = ((GridY - GridCorrector) * YStep) + OddRowPush; GlobalCoordinates.y = -GridX * XStep; //Instantiating a tile CurrentTile = (GameObject)Instantiate(DefaultTile, new Vector3(GlobalCoordinates.x, 0, GlobalCoordinates.y), Quaternion.identity); CurrentTile.name = "[" + GridY + "," + GridX + "]"; CurrentTile.transform.SetParent(this.transform); CurrentTile.AddComponent <HexTile>(); HexTile currentHex = CurrentTile.GetComponent <HexTile>(); currentHex.AxialCoordinates = new Vector2(GridX, GridY); currentHex.Type = (TerrainType)Rand.Next(0, 5); TerrainProperty terrainProp = FindProperty(currentHex); CurrentTile.GetComponent <Renderer>().material.color = terrainProp.DebugColor; if (GridX == 0 && GridY == 0) { PlayersTile = currentHex; } } if (GridX % 2 == 1) { GridCorrector--; } } }