好吧,所以基本上我有一个圆环形状的网格,在Unity中,需要根据其值来按顺时针方向更改其材质。像这样,白色的百分比在增加:
我不知道该怎么做,因为我对动态着色器的知识有限。我需要逐步显示一个单独的对象吗?还是我该怎么办?
答案 0 :(得分:0)
尽管从技术上讲,您可以制作一个可以计算与给定对象中心到每个像素的角度的着色器,但是最好的选择是将圆环展开,使过渡的行进方向映射到UV中的X轴空间(参见图片)。然后,您可以公开一个介于0到1范围内的属性,该属性以百分比表示截止点。最后,在片段或曲面函数中,您可以执行以下操作:
if (i.uv.x - _Cutoff > 0) {
// Material A
col = tex2D(_TextureA, i.uv);
roughness = _RoughnessA;
// etc.
} else {
// Material B
col = tex2D(_TextureB, i.uv);
roughness = _RoughnessB;
}
然后可以通过C#脚本为_Cutoff属性设置动画。更酷的是,您可以使用蒙版纹理描述过渡,并使用offset变量偏移其uv.x坐标,然后使用颜色值在两个材质属性之间进行捕捉。