private void CreateCell(int x, int z, int i) { // Z is indexed starting from below. var xPosition = (x + z * .5f - z / 2) * HexMetrics.innerRadius * 2f; var zPosition = z * HexMetrics.outerRadius * 1.5f; var position = new Vector3(xPosition, 0, zPosition); var cell = Instantiate(hexCell, position, Quaternion.identity); var collider = cell.gameObject.AddComponent(typeof(BoxCollider)) as BoxCollider; // Box collider is not ideal, but placeholder until we can get an actual hexagon prefab? collider.size = new Vector3(20.0f, 5.0f, 20.0f); collider.isTrigger = true; cell.transform.parent = parentCell.transform; hexCells[i] = cell; cell.coordinates = HexCoordinates.FromOffsetCoords(x, z); if (x > 0) { cell.SetNeighbor(HexDirection.W, hexCells[i - 1]); } if (z > 0) { if (z % 2 == 0) //even { cell.SetNeighbor(HexDirection.SE, hexCells[i - xWidth]); if (x > 0) { cell.SetNeighbor(HexDirection.SW, hexCells[i - xWidth - 1]); } } else { cell.SetNeighbor(HexDirection.SW, hexCells[i - xWidth]); if (x < xWidth - 1) { cell.SetNeighbor(HexDirection.SE, hexCells[i - xWidth + 1]); } } } var label = Instantiate(hexCellLabel); label.rectTransform.SetParent(gridUICanvas.transform, false); label.rectTransform.anchoredPosition = new Vector2(xPosition, zPosition); label.text = x + "," + z; //hex grid coordinates, not global }
private void CreateCell(int x, int z, int i) { // Z is indexed starting from below. var xPosition = (x + z * .5f - z / 2) * HexMetrics.innerRadius * 2f; var zPosition = z * HexMetrics.outerRadius * 1.5f; var position = new Vector3(xPosition, 0, zPosition); var cell = Instantiate(hexCell, position, Quaternion.identity); cell.transform.parent = parentCell.transform; hexCells[i] = cell; cell.coordinates = HexCoordinates.FromOffsetCoords(x, z); if (x > 0) { cell.SetNeighbor(HexDirection.W, hexCells[i - 1]); } if (z > 0) { if (z % 2 == 0) //even { cell.SetNeighbor(HexDirection.SE, hexCells[i - xWidth]); if (x > 0) { cell.SetNeighbor(HexDirection.SW, hexCells[i - xWidth - 1]); } } else { cell.SetNeighbor(HexDirection.SW, hexCells[i - xWidth]); if (x < xWidth - 1) { cell.SetNeighbor(HexDirection.SE, hexCells[i - xWidth + 1]); } } } var label = Instantiate(hexCellLabel); label.rectTransform.SetParent(gridUICanvas.transform, false); label.rectTransform.anchoredPosition = new Vector2(xPosition, zPosition); label.text = x + "," + z; //hex grid coordinates, not global }