这篇文章主要讲解了Unity实现角色受击身体边缘发光特效的方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
目前累计服务客户1000多家,积累了丰富的产品开发及服务经验。以网站设计水平和技术实力,树立企业形象,为客户提供网站制作、成都网站建设、网站策划、网页设计、网络营销、VI设计、网站改版、漏洞修补等服务。创新互联始终以务实、诚信为根本,不断创新和提高建站品质,通过对领先技术的掌握、对创意设计的研究、对客户形象的视觉传递、对应用系统的结合,为客户提供更好的一站式互联网解决方案,携手广大客户,共同发展进步。游戏中经常需要制作角色受击打的身体边缘光效果,本文使用的方法是,给Renderer叠加一个制作好的边缘光材质球,并通过脚本动态控制边缘光的渐变效果,表现出受击后的边缘光效果
工程结构如下
1 创建一个材质球HittedMatEffect.mat放在Assets/Resources/Material目录中,使用TransparentRim.shader
注意代码中用了Resources.Load,所以必须放在这个目录里,你可以改成别的方式
2 场景中创建一个Sphere(球体),挂上Runner脚本,运行,点击屏幕任意位置,球体就会表现出受击的边缘光效果了
运行效果
代码
TransparentRim.shader
Shader "Effect/TransparentRim" { Properties{ _RimColor("Rim Color", Color) = (0.5,0.5,0.5,0.5) _InnerColor("Inner Color", Color) = (0.5,0.5,0.5,0.5) _InnerColorPower("Inner Color Power", Range(0.0,1.0)) = 0.5 _RimPower("Rim Power", Range(0.0,5.0)) = 2.5 _AlphaPower("Alpha Rim Power", Range(0.0,8.0)) = 4.0 _AllPower("All Power", Range(0.0, 10.0)) = 1.0 } SubShader{ Tags { "Queue" = "Transparent" } CGPROGRAM #pragma surface surf Lambert alpha struct Input { float3 viewDir; INTERNAL_DATA }; float4 _RimColor; float _RimPower; float _AlphaPower; float _AlphaMin; float _InnerColorPower; float _AllPower; float4 _InnerColor; void surf(Input IN, inout SurfaceOutput o) { half rim = 1.0 - saturate(dot(normalize(IN.viewDir), o.Normal)); o.Emission = _RimColor.rgb * pow(rim, _RimPower)*_AllPower + (_InnerColor.rgb * 2 * _InnerColorPower); o.Alpha = (pow(rim, _AlphaPower))*_AllPower; } ENDCG } Fallback "VertexLit" }
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。