miepzerino
2025-04-02 f0315bea6acee2316665d6ca5c945da84f22c1ee
Assets/Scripts/GenerateTileMap.cs
@@ -6,28 +6,28 @@
using UnityEngine.Tilemaps;
using UnityEngine.UIElements;
[Serializable]
public class Ore
{
    public string name;
    /// <summary>
    /// The lower the numer the higher the amount of ores that will spawn
    /// Higher number means less ore
    /// </summary>
    [Tooltip("The lower the numer the higher the amount of ores that will spawn. Higher number means less ore.")]
    [Range(1, 100000)]
    public int weight;
    /// <summary>
    /// The lower the number the more dense the ore will spawn (big clusters
    /// Higher number means little clusters (more spread)
    /// </summary>
    [Tooltip("The lower the number the more dense the ore will spawn (big clusters. Higher number means little clusters (more spread).")]
    [Range(10, 100000)]
    public int clusterWeight;
    public CustomRuleTile tile;
    public int maxSpawnHeight;
    public int minSpawnHeight;
}
//[Serializable]
//public class Ore
//{
//    public string name;
//    /// <summary>
//    /// The lower the numer the higher the amount of ores that will spawn
//    /// Higher number means less ore
//    /// </summary>
//    [Tooltip("The lower the numer the higher the amount of ores that will spawn. Higher number means less ore.")]
//    [Range(1, 100000)]
//    public int weight;
//    /// <summary>
//    /// The lower the number the more dense the ore will spawn (big clusters
//    /// Higher number means little clusters (more spread)
//    /// </summary>
//    [Tooltip("The lower the number the more dense the ore will spawn (big clusters. Higher number means little clusters (more spread).")]
//    [Range(10, 100000)]
//    public int clusterWeight;
//    public CustomRuleTile tile;
//    public int maxSpawnHeight;
//    public int minSpawnHeight;
//}
public class GenerateTileMap : MonoBehaviour
{
@@ -41,7 +41,7 @@
    Tilemap tilemap;
    public CustomRuleTile forestRuleTile;
    public TileBase borderTile;
    public List<Ore> ores;
    public List<Generateable> generateables;
    //public List<TileBase> tiles;
    private void Awake()
@@ -114,24 +114,24 @@
            }
        }
        if (ores != null)
        if (generateables != null)
        {
            foreach (Ore ore in ores)
            foreach (Generateable generateable in generateables)
            {
                for (int x = 0; x < maxWidth; x++)
                {
                    for (int y = ore.minSpawnHeight; y < ore.maxSpawnHeight; y++)
                    for (int y = generateable.minSpawnHeight; y < generateable.maxSpawnHeight; y++)
                    {
                        float xPerlin = ((float)x / maxWidth) * (float)ore.clusterWeight + offsetX;
                        float yPerlin = ((float)y / maxHeight) * (float)ore.clusterWeight + offsetY;
                        float xPerlin = ((float)x / maxWidth) * (float)generateable.clusterWeight + offsetX;
                        float yPerlin = ((float)y / maxHeight) * (float)generateable.clusterWeight + offsetY;
                        float perlinNoise = Mathf.PerlinNoise(xPerlin, yPerlin);
                        if (perlinNoise <= (1f / (float)ore.weight))
                        if (perlinNoise <= (1f / (float)generateable.weight))
                        {
                            Vector3Int tileSpawnCoord = new Vector3Int(x, y);
                            if (!destroyedTiles.Contains(tileSpawnCoord) && tilemap.HasTile(tileSpawnCoord))
                            {
                                tilemap.SetTile(tileSpawnCoord, ore.tile);
                                tilemap.SetTile(tileSpawnCoord, generateable.tile);
                            }
                        }