1.说下思路。柏林噪声需要两个小于1的的参数导入。然后柏林噪声会输出一个相对波动变化的值0到1之间,如果对这个值进行的区间判断,就可以决定生成地图数量。比如,if<0.6再生成地图块,
2.对传入的两个值进行取值范围的随机,便可以轻松地决定地图的随机分布。
下再上代码,
using UnityEngine;
public class Map4 : MonoBehaviour
{
public GameObject Par;//父物体
public GameObject gam1;//生成物体
public float x = 0;
public float y = 0;
public int a = 10;
public int b = 10;//取值范围a和b值决定地图分布形式
public int c = 50;//取值范围决定生成地图数量
private void Start()
{
Map();
}
private void Map()
{
c = Random.Range(40, 50);//随机取值范围决定生成地图数量
a = Random.Range(15, 30);//随机取值范围a和b值决定地图分布形式
b = Random.Range(15, 30);
for (x = 0; x < 100; x = x + 1)
{
for (y = 0; y < 100; y = y + 1)
{
float m = x / a;
float n = y / b;
float o = Mathf.PerlinNoise(m, n) * 100;
o = Mathf.Round(o);//取整数
Vector3 v3 = new Vector3(x, y, 9);
if (o < c)
{
GameObject gam = Instantiate(gam1, v3, Quaternion.identity);//实例化(名字+位置+旋转)
gam.transform.parent = Par.transform;
}
}
}
}
}
当取值范围
当取值范围如开始贴的代码
3.取值范围进行修改。从而达到我们想要的地图类型,