多语言展示
当前在线:1925今日阅读:4今日分享:26

Unity Shader教程之 旗帜飘扬效果的简单实现

Unity Shader教程之 旗帜飘扬效果的简单实现。本节介绍,在Unity开发中,实现旗帜飘扬的简单效果的方法,具体如下
工具/原料

Unity

方法/步骤
1

打开Unity,新建一个工程,具体如下图

2

在工程中添加一个 GameObject 空物体命名为 Flag,在Flag下面添加 Sphere、Cylinder 和 Plane,然后适当布局,效果如下图

3

任意找一张图片作为前面导入,并在工程中新建两个材质 Material,Grey 带金属光泽的材质球赋给 Sphere 和 Cylinder,具体如下图

4

在工程中新建一个 Shader 脚本,命名为 Flag,然后双击打开脚本进行编辑,具体如下图

5

Flag 脚本具体代码如下图

6

Flag 脚本具体内容如下:Shader 'Custom/Flag' {    Properties    {        _MainTex('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        {              Cull off              CGPROGRAM              #pragma vertex vert               #pragma fragment frag               #include 'UnityCG.cginc'              struct v2f              {                    float4 pos:POSITION;                    float2 uv:TEXCOORD0;               };               sampler2D _MainTex;               float4 _MainTex_ST;               fixed4 _MainColor;               float _ScaleX;               float _ScaleZ;               float _SpeedX;               float _SpeedZ;               float _Slant;               v2f vert(appdata_base v)               {                     v2f o;                     float x = (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);                      return o;                 }                 fixed4 frag(v2f i):COLOR                 {                       fixed4 color = tex2D(_MainTex,i.uv);                       return color;                  }             ENDCG             }      }}

7

脚本编译正确,回到unity,把材质 Flag 的 Shader 设置为 Flag,把导入的贴图添加上,最后把材质赋给场景中的 Plane,具体如下图

8

运行场景,旗帜飘扬的效果就实现了,具体如下图

注意事项

您的支持,是我们不断坚持知识分享的动力,若帮到您,还请帮忙投票有得;若有疑问,请留言

推荐信息