代码
很简单,用value判断噪音图形,地图种子在1到1000之间。代码如下:
using UnityEngine.Tilemaps;
public class RandomMapGenerator : MonoBehaviour
{
public int width = 256;
public int height = 256;
public float scale = 20f;
public TileBase waterTile;
public TileBase grassTile;
public TileBase sandTile;
public TileBase stoneTile;
private Tilemap tilemap;
void Start()
{
tilemap = GetComponent<Tilemap>();
int seed = Random.Range(1, 1001);
Random.InitState(seed);
GenerateMap();
}
void GenerateMap()
{
for (int x = 0; x < width; x++)
{
for (int y = 0; y < height; y++)
{
float xCoord = (float)x / width * scale;
float yCoord = (float)y / height * scale;
float perlinValue = Mathf.PerlinNoise(xCoord, yCoord);
TileBase tile = GetTileFromPerlinValue(perlinValue);
tilemap.SetTile(new Vector3Int(x, y, 0), tile);
}
}
}
TileBase GetTileFromPerlinValue(float value)
{
if (value < 0.2f)
{
return waterTile;
}
else if (value < 0.4f)
{
return sandTile;
}
else if (value < 0.7f)
{
return grassTile;
}
else
{
return stoneTile;
}
}
}
效果图:![](https://i-blog.csdnimg.cn/direct/88d69bfac6a24f9aa9854126a9970d32.png)
下次我会添加生物群系;)