public void GenerateSector() { var infoObj = GameObject.FindWithTag("WorldDataInfo"); WorldDataInfo worldData = infoObj.GetComponent <WorldDataInfo>(); for (int column = 0; column < mapSize.x; column++) { Vector2 phase = new Vector2(Mathf.Cos((float)column / mapSize.x * 2f * Mathf.PI), Mathf.Sin((float)column / mapSize.x * 2f * Mathf.PI)) * samplingRadius; Vector2 samplingPoint = worldData.CurrentSectorWorldPosition + phase; BiomeData sample = worldData.BiomeDataAt(samplingPoint); int height = (int)Mathf.Min(sample.Height * mapSize.y + (-1f + 2f * Mathf.PerlinNoise(samplingPoint.x * terrainRoughness, samplingPoint.y * terrainRoughness)) * terrainDeviation, mapSize.y); if (column == mapSize.x / 2) { spawnHeight = height + 1; } for (int y = 0; y < height; y++) { tiles.Add(new Vector3Int(column, y, 0), baseTile); } } Vector3Int[] positionArray = new Vector3Int[tiles.Count]; ScriptedTile[] tilesArray = new ScriptedTile[tiles.Count]; int i = 0; foreach (KeyValuePair <Vector3Int, ScriptedTile> pair in tiles) { positionArray[i] = pair.Key; tilesArray[i] = pair.Value; i++; } tilemap.SetTiles(positionArray, tilesArray); }
void Awake() { Instance = this; MapGenerator = GetComponent <WorldMapGenerator>(); var infoObj = GameObject.FindWithTag("WorldDataInfo"); if (infoObj != null) { worldData = infoObj.GetComponent <WorldDataInfo>(); if (worldData == null) { worldData = infoObj.AddComponent <WorldDataInfo>(); } } else { infoObj = new GameObject("WorldDataInfoObject"); infoObj.tag = "WorldDataInfo"; worldData = infoObj.AddComponent <WorldDataInfo>(); } DontDestroyOnLoad(infoObj); foreach (var preset in presets) { sectors.Add(preset.position, null); } }