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;
html滚动效果代码}
ENDCG
}
FallBack "Diffuse"
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论