Exemplo n.º 1
0
    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--;
            }
        }
    }