今天实现一个简单的翻书的效果,话不多说,先上一张效果图:
创新互联-专业网站定制、快速模板网站建设、高性价比大东网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式大东网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖大东地区。费用合理售后完善,10多年实体公司更值得信赖。这里就随便用的一张纹理了,我们还是称为“翻木板”吧,哈哈。
实现过程:
其实这个效果实现起来还是挺简单的,大概思路其实就是 让所有顶点都绕Z轴旋转,并且通过正余弦使之带有一点弧度。
下面开始让我们一步一步的实现该效果。
首先打开Unity新建一个工程,场景,并且创建一个名为openBookEffect的Shader文件,删掉原本多余的代码。
第一步,我们先让它绕z轴旋转起来
这里就要用到一个旋转矩阵了,让顶点左乘该矩阵,就能得到旋转之后的位置了。(ps:这里就不详细的解释旋转矩阵怎么推导来的了,有兴趣的可以去百度了解一下。)
旋转矩阵有3种:
1.绕x轴旋转:
2.绕y轴旋转
3.绕z轴旋转
很明显,我们这里需要用到的是第三个 绕z轴旋转的矩阵。下面我们通过代码来构建一个旋转矩阵并使之旋转一定的角度:
Properties { _MainTex ("Texture", 2D) = "white" {} //旋转角度 _Angle("Angle",Range(0,180))=0 } .... sampler2D _MainTex; //角度 float _Angle; //顶点着色器 v2f vert (appdata v) { v2f o; float s; float c; //通过该方法可以计算出该角度的正余弦值 sincos(radians(_Angle),s,c); //旋转矩阵 float4x4 rotateMatrix={ c ,s,0,0, -s,c,0,0, 0 ,0,1,0, 0 ,0,0,1 }; //顶点左乘以旋转矩阵 v.vertex = mul(rotateMatrix,v.vertex); //模型空间转换到裁剪空间 o.vertex = UnityObjectToClipPos(v.vertex); o.uv = v.uv; return o; } ....
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。