使用图片修改Plane地形

using UnityEngine;
using UnityEngine.UI;

public class CreatTerrain : MonoBehaviour
{
    public Texture2D texture;
    //使用图片生成地形
    void Start()
    {
        //获取图片像素值
        int w = texture.width;
        int h = texture.height;

        VertexHelper vh = new VertexHelper();
        for (int x = 0; x < w; x++)
        {
            for (int z = 0; z < h; z++)
            {
                //获取像素颜色
                Color color = texture.GetPixel(x, z);
                //从颜色中获取灰度值 作为地形高度
                float y = color.grayscale;
                var uvx = (float) x / (float) w;
                var uvy = (float) z / (float) h;
                //修改顶点起伏
                vh.AddVert(new Vector3(x, y, z), Color.white, new Vector2(uvx, uvy));

                if (x != w - 1 && z != h - 1)
                {
                    vh.AddTriangle(x * h + z, x * h + z + 1, (x + 1) * h + z + 1);
                    vh.AddTriangle(x * h + z, (x + 1) * h + z + 1, (x + 1) * h + z);
                }
            }
        }

        //添加到绘制
        Mesh mesh = new Mesh();
        vh.FillMesh(mesh);
        GetComponent<MeshFilter>().mesh = mesh;
        GetComponent<MeshCollider>().sharedMesh = mesh;

        //修改材质球贴图
        Material material = new Material(Shader.Find("Standard"));
        material.mainTexture = texture;
        GetComponent<MeshRenderer>().material = material;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值