资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

Unity实现角色受击身体边缘发光特效的方法-创新互联

这篇文章主要讲解了Unity实现角色受击身体边缘发光特效的方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

目前累计服务客户1000多家,积累了丰富的产品开发及服务经验。以网站设计水平和技术实力,树立企业形象,为客户提供网站制作、成都网站建设、网站策划、网页设计、网络营销、VI设计、网站改版、漏洞修补等服务。创新互联始终以务实、诚信为根本,不断创新和提高建站品质,通过对领先技术的掌握、对创意设计的研究、对客户形象的视觉传递、对应用系统的结合,为客户提供更好的一站式互联网解决方案,携手广大客户,共同发展进步。

游戏中经常需要制作角色受击打的身体边缘光效果,本文使用的方法是,给Renderer叠加一个制作好的边缘光材质球,并通过脚本动态控制边缘光的渐变效果,表现出受击后的边缘光效果

工程结构如下

1 创建一个材质球HittedMatEffect.mat放在Assets/Resources/Material目录中,使用TransparentRim.shader
注意代码中用了Resources.Load,所以必须放在这个目录里,你可以改成别的方式
2 场景中创建一个Sphere(球体),挂上Runner脚本,运行,点击屏幕任意位置,球体就会表现出受击的边缘光效果了

Unity实现角色受击身体边缘发光特效的方法

运行效果

Unity实现角色受击身体边缘发光特效的方法

代码

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许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站栏目:Unity实现角色受击身体边缘发光特效的方法-创新互联
URL链接:http://www.cdkjz.cn/article/iiieo.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220