UnityShader教程之旗帜飘扬效果的简单实现。本节介绍,在Unity开发中,实现旗帜飘扬的简单效果的方法,具体如下
工具/原料
Unity
方法/步骤
1、打开Unity,新建一个工程,具体如下图
2、在工程中添加一个GameObject空物体命名为Flag,在Flag下面添加咯悝滩镞Sphere、Cylinder和Plane,然后适当布局,效果如下图
3、任意找一张图片作为前面导焯拜芪恨入,并在工程中新建两个材质Material,Grey带金属光泽的材质球赋给Sphere和Cylinder,具体如下图
4、在工程中新建一个Shader脚本,命名为Flag,然后双击打开脚本进行编辑,具体如下图
5、Flag脚本具体代码如下图
6、Flag脚本具体内容如下:Shader&q掼鸿乡羰uot;Custom/Flag"{Properties{_Main皈其拄攥Tex("MainTex",2D)="White"{}_MainColor("MainColor",color)=(1,1,1,1)_ScaleX("ScaleX",float)=1_ScaleZ("ScaleZ",float)=1_Slant("Slant",Range(0,3))=1_SpeedX("Speed",float)=1_SpeedZ("Speed",float)=1}SubShader{pass{CulloffCGPROGRAM#pragmavertexvert#pragmafragmentfrag#include"UnityCG.cginc"structv2f{float4pos:POSITION;float2uv:TEXCOORD0;};sampler2D_MainTex;float4_MainTex_ST;fixed4_MainColor;float_ScaleX;float_ScaleZ;float_SpeedX;float_SpeedZ;float_Slant;v2fvert(appdata_basev){v2fo;floatx=(1-(v.vertex.x+5)/10);v.vertex.y+=_ScaleX*x*sin(v.vertex.x+_Time.z*_SpeedX);v.vertex.y+=_ScaleZ*x*sin(v.vertex.z+_Time.y*_SpeedZ);v.vertex.z+=_Slant*x;o.pos=UnityObjectToClipPos(v.vertex);o.uv=TRANSFORM_TEX(v.texcoord,_MainTex);returno;}fixed4frag(v2fi):COLOR{fixed4color=tex2D(_MainTex,i.uv);returncolor;}ENDCG}}}
7、脚本编译正确,回到unity,把材质Flag的Shader设置为Flag,把导入的贴图添加上,最后把材质赋给场景中的Plane,具体如下图
8、运行场景,旗帜飘扬的效果就实现了,具体如下图