用mesh.uv改变material在triangles的显示位置

由于要做一个puzzle拼图游戏,假设为r*c的拼图,所以要把原图分为r行c列,每一个单元显示原图材质的[width*(1/c)*nc,height*(1/r)*nr]的位置,其中nc为列索引,nr为行索引。

1,每一块需要是一个有四个顶点,两个三角形组成的mesh:

MeshRenderer renderer = gameObject.AddComponent<MeshRenderer>();
Mesh mesh = meshfilter.mesh;
mesh.vertices =  new Vector3[]{new Vector3(0,0,0),new Vector3(0,1,0),new Vector3(1,1,0),new Vector3(1,0,0)};
newUV = new Vector2[] { new Vector2(0, 0), new Vector2(0, 1), new Vector2(num, 1), new Vector2(1, 0) };//0,0为材质左下角,1,1为右上角,可以根据切块的大小改变为[width*(1/c)*nc,height*(1/r)*nr]
mesh.uv = newUV;
mesh.triangles =  new int[] { 0, 1, 2, 2, 3, 0 };
2,给每一块添加网格过滤器MeshFilter将材质贴图渲染在Mesh上

MeshRenderer renderer = gameObject.AddComponent<MeshRenderer>();
renderer.material = material;
这样就生成一个quad网格,用来将切割的图片块显示在网格上




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值