コード例 #1
0
    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
    }
コード例 #2
0
    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
    }