多语言展示
当前在线:1721今日阅读:152今日分享:13

Unity Shader教程之 贴图旋转效果的简单实现

Unity Shader教程之 贴图旋转效果的简单实现。本节介绍,在Unity开发中,使用Shader使得贴图旋转起来的方法,具体如下
工具/原料

Unity

方法/步骤
1

打开Unity,新建一个工程,在场景中添加一个 Plane,合理放置,具体如下图

2

在场景中导入一张中心对称的图片,具体如下图

3

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

4

RotateShader 脚本具体代码如下图

5

RotateShader 脚本具体内容如下:Shader 'Custom/RotateShader' { Properties{ _Color('Color', Color) = (1, 1, 1, 1) _MainTex('Main Texture', 2D) = 'white'{} _RSpeed('Rotate Speed', Range(1, 100)) = 10 } SubShader{ tags{'Queue' = 'Transparent' 'RenderType' = 'Transparent' 'IgnoreProjector' = 'True' } Blend SrcAlpha OneMinusSrcAlpha Pass{ Name 'RotateShader' Cull off CGPROGRAM #pragma vertex vert #pragma fragment frag #include 'UnityCG.cginc' float4 _Color; sampler2D _MainTex; float _RSpeed; struct v2f{ float4 pos : POSITION; float4 uv : TEXCOORD0; }; v2f vert (appdata_base v){ v2f o; o.pos = mul(UNITY_MATRIX_MVP, v.vertex); o.uv = v.texcoord; return o; } half4 frag(v2f i) : COLOR{ float2 uv = i.uv.xy - float2(0.5, 0.5); uv = float2(uv.x * cos(_RSpeed * _Time.x) - uv.y * sin(_RSpeed * _Time.x),  uv.x * sin(_RSpeed * _Time.x) + uv.y * cos(_RSpeed * _Time.x)); uv += float2(0.5, 0.5); half4 c = tex2D(_MainTex, uv) * _Color; return c; } ENDCG } }}

6

脚本编译正确,回到unity,在工程中添加一个材质,可以命名为 RotateMaterial,把材质的 Shader 设置为刚才新建的 RotateShader,并把把贴图设置上,具体如下图

7

然后把材质赋给 Plane,运行场景,具体如效果如下图

8

发现旋转时边缘有重复图案,把贴图的 Wrap Mode 设置为 Clamp,具体如下图

9

运行场景,即会发现边缘的重复图案消失了,具体如下图

注意事项

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

推荐信息