Unity3D中人物角色被攻击变色,死亡渐隐消失,墙后显示的Shader
来源:互联网 发布:二维码解码软件 编辑:程序博客网 时间:2024/04/30 03:27
这段代码是在Unity蛮牛给人解答的时候写的,第一次写Shader,Unity官方的语法还没来得及完全过一遍,比较仓促,还好效果实现了!
笔记:Alpha Blending则是一种中庸的方式,它使用当前fragment的alpha作为混合因子,来混合之前写入到缓存中颜色值。但Alpha Blending麻烦的一点就是它需要关闭ZWrite,并且要十分小心物体的渲染顺序。如果不关闭ZWrite,那么在进行深度检测的时候,它背后的物体本来是可以透过它被我们看到的,但由于深度检测时大于它的深度就被剔除了,从而我们就看不到它后面的物体了。因此,我们需要保证物体的渲染顺序是从后往前,并且关闭该半透明对象的ZWrite。
Shader "Custom/Test" {Properties { _Color ("Main Color", Color) = (1,1,1,1) _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {} _Alpha("Alpha", Range (0.01,1.0)) = 0.5}SubShader { Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } LOD 200 Pass { ZWrite Off ColorMask 0} CGPROGRAM #pragma surface surf Lambert alpha sampler2D _MainTex; float _Alpha; fixed4 _Color; struct Input { float2 uv_MainTex; }; void surf (Input IN, inout SurfaceOutput o) { half4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color; o.Emission = c.rgb; o.Alpha = _Alpha; } ENDCG} FallBack "Diffuse"}
将上面的这段Shader放到Unity3D中,放到模型上。就可以自己调试Alpha值和模型的颜色了,只要在角色被攻击的时候改下颜色值,然后攻击完改回来就可以了,角色死亡的时候调整Alpha值减少,就可以看起来是渐隐消失的效果了!
由于透明度在不同的移动端优化和ColorMask这玩意在移动端消耗比较大,所以有了下面的这个shader:
Shader "Transparent/DiffuseS" { Properties { _Color ("Main Color", Color) = (1,1,1,1) _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {} } SubShader { Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"} LOD 200 CGPROGRAM #pragma surface surf Lambert alpha sampler2D _MainTex; fixed4 _Color; struct Input { float2 uv_MainTex; }; void surf (Input IN, inout SurfaceOutput o) { fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color; o.Emission = c.rgb; o.Alpha = c.a; } ENDCG } Fallback "Transparent/VertexLit"}
这个shader可以在移动端使用没有问题,修改的时候只要修改_Color属性和颜色值即可!
0 0
- Unity3D中人物角色被攻击变色,死亡渐隐消失,墙后显示的Shader
- [Unity3D] [Shader] 实现基于NDC的Sprite渐隐Shader
- Unity3D-人物角色选择
- Unity3D开发——LeRunning的人物角色信息的显示
- Unity3D shader 人物被选中光环/技能范围光环
- 3d游戏中人物被遮挡后以其它颜色显示的方法
- Unity3D 角色死亡灰屏特效实现
- Tableau10.4中智能显示点击后消失的解决方案
- DGameEditor的人物角色滑墙运动
- Unity3D-Shader-人物残影效果 [
- Unity3D角色攻击+攻击轨迹(初版)
- Unity3d 场景中物体渐隐效果实现
- Unity3D 人物头顶名称显示
- [Unity3D]Shader编程之腐蚀消失
- Unity3D自学笔记——架构应用(八)人物移动与角色相机的跟随
- Unity3D中CG/GLSL shader与iPhone shader的区别
- unity3d shader中RenderType的所有类型
- Unity3d中shader属性的控制
- ubuntu14.04 安装nginx和php5.6.12
- ABBYY PDF Transformer+到底有哪些专业术语(一)
- CNN提速23.5倍!Facebook开源DL模块带给我们什么?
- 简单总结Android View 绘制过程
- tomcat发布程序不用输入目录直接访问
- Unity3D中人物角色被攻击变色,死亡渐隐消失,墙后显示的Shader
- 只读字段(显示系统时间)
- Android 输入法表情实现
- 大型网站构架演变
- 实例讲解访问者模式(Visitor Pattern)
- [LeetCode] Unique Paths
- Linux下crontab命令的用法:sudo crontab -l
- IEEE 754 浮点数的表示精度探讨
- 线程2:线程通信事件机制(单线程、两个线程、多个线程通信)