コード例 #1
0
        public void GenerateMap()
        {
            ClearMap();
            tilemapScale = GameObject.FindGameObjectWithTag(Tags.TerrainTilemap).transform.localScale;

            tileHeight = Vector3.Distance(
                tilemap.CellToWorld(HexTools.GetAdjacentTileOffset(Vector3Int.zero, Cardinality.N)),
                tilemap.CellToWorld(new Vector3Int(0, 0, 0)));

            float diagonalDist = Vector3.Distance(
                tilemap.CellToWorld(Vector3Int.zero),
                tilemap.CellToWorld(HexTools.GetAdjacentTileOffset(Vector3Int.zero, Cardinality.NE)));

            tileWidth = Mathf.Sqrt(diagonalDist * diagonalDist - Mathf.Pow(tileHeight * .5f, 2)) * 4 / 3;

            tileDefinitions.terrainData.Sort();

            var regionDict = StageOne.RunGeneration(this);

            StageTwo.RunGeneration(this, regionDict);
            //if (useNoise)
            //	FillMapArea(Vector3Int.zero, initialViewRadius);
            //else
            //	RandomFillMap();


            //for (int i = 0; i < smoothSteps; ++i)
            //{
            //	if (!SmoothMap(Vector3Int.zero))
            //		break;
            //}

            //ProcessMap();
        }
コード例 #2
0
    public void MakeMesh()
    {
        hexHeight = Vector3.Distance(
            tilemap.CellToWorld(HexTools.GetAdjacentTileOffset(Vector3Int.zero, Cardinality.N)),
            tilemap.CellToWorld(new Vector3Int(0, 0, 0)));

        float diagonalDist = Vector3.Distance(
            tilemap.CellToWorld(Vector3Int.zero),
            tilemap.CellToWorld(HexTools.GetAdjacentTileOffset(Vector3Int.zero, Cardinality.NE)));

        hexWidth = Mathf.Sqrt(diagonalDist * diagonalDist - Mathf.Pow(hexHeight * .5f, 2)) * 4 / 3;

        tilemap.ClearAllTiles();

        var tiles = HexTools.GetSpiral(Vector3Int.zero, mapRadius);

        TileBase[] tileArray = new TileBase[tiles.Count];


        for (int index = 0; index < tiles.Count; index++)
        {
            tileArray[index] = testTile;
        }

        tilemap.SetTiles(tiles.ToArray(), tileArray);

        if (mapRadius == 0)
        {
            mapRadius = 1;
        }
        float[,] noiseMap = Noise.GenerateNoiseMap(4 * mapRadius * 2, 3 * mapRadius * 2, noiseSettings, Vector2.zero);
        MeshIt(tiles.ToArray(), noiseMap);
    }