unity 实现图片滚动效果(流动的水体)

           这篇博客是为了我亲爱的宇哥写的,希望它能够快点学习,尽快的掌握unity引擎。

           此代码实现的实现功能是,让一个纹理动态的滚动起来,模拟水体滚动的效果;

           原理是:获取主要纹理的uv,让uv乘以_Time,进行实时的位置计算。


           废话不多说,代码在下面:

    Shader "Custom/gundong" {
    Properties{
             //定义一个主纹理
            _MainTex("主要纹理",2D)="white"{}
            //定义一个u向的初始速度
            _SpeedX("U速度",Range(0.1,12))=1
            //定义一个v向的初始速度
            _SpeedY("V速度",Range(0.1,12))=1
    }
    SubShader{
            //标签渲染类型 几何体
            Tags{"RenderType"="Opaque"}
            CGPROGRAM
            //指定unity 内置Lambert光照模型
            #pragma surface surf Lambert
            //输出结构体
            struct Input{
               //定义主纹理uv
               float2 uv_MainTex;
            };
            sampler2D _MainTex;
            float _SpeedY;
            float _SpeedX;
            
            void surf(Input IN,inout SurfaceOutput o){
                 //获取主纹理uv 给一个给 变量 mainVU
                float2 mainVU=IN.uv_MainTex;
                //速度和_Time相乘 给 X Y
                 fixed X=_SpeedX*_Time;
                 fixed Y=_SpeedY*_Time;
                //主要UV 动态加上 x y
               mainVU+=fixed2(X,Y);
               //反射 主纹理
               o.Albedo=tex2D(_MainTex,mainVU).rgb;
            }
            ENDCG
    }
    FallBack "Diffuse"
}



   

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值