C# 使用柏林噪声创造地形

//类外
[RequireComponent(typeof(MeshFilter))]
[RequireComponent(typeof(MeshRenderer))]
[RequireComponent(typeof(MeshCollider))]

public Texture2D map;
int w;
int h;
Mesh mesh;
VertexHelper vh;
void Start
{
     //根据图片的长宽赋值地形的长宽
     w = map.width;
     h = map.height;

     mesh = new Mesh();
     vh = new VertexHelper();

     for (int i = 0; i < w; i++)
     {
        for (int j = 0; j <h; j++)
        {
            //计算y值
            float y = Mathf.PerlinNoise(i * 0.04f, j * 0.04f);
            //根据y值生成地形的高低起伏
            vh.AddVert(new Vector3(i, y * 10, j), Color.white, new Vector2(i * 1.0f / w, j * 1.0f / h));
            if (i<w-1&&j<h-1)
            {
               vh.AddTriangle(i * h + j, i * h + j + 1, (i + 1) * h + j + 1);
               vh.AddTriangle(i * h + j, (i+1) * h + j + 1, (i + 1) * h + j);
            }
         }
      }
      vh.FillMesh(mesh);
      GetComponent<MeshFilter>().mesh = mesh;
      Material mat = new Material(Shader.Find("Standard"));
      mat.mainTexture = map;
      GetComponent<MeshRenderer>().material = mat;
      GetComponent<MeshCollider>().sharedMesh = mesh;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值