Unity 粒子特效遮罩(ParticleMask)

1.需求:

游戏中粒子特效能实现非常好的效果,但是由于粒子特效是独立的系统,Unity自带的Mask普通的遮罩,遮不住粒子特效。

2.实现原理:

通过shader把超出范围的粒子纹理(Texture),改成透明颜色,以实现遮住粒子特效的功能。

3.关键Shader代码

fixed4 frag (v2f i) : SV_Target
			{
				#ifdef SOFTPARTICLES_ON
				float sceneZ = LinearEyeDepth (SAMPLE_DEPTH_TEXTURE_PROJ(_CameraDepthTexture, UNITY_PROJ_COORD(i.projPos)));
				float partZ = i.projPos.z;
				float fade = saturate (_InvFade * (sceneZ-partZ));
				i.color.a *= fade;
				#endif
				
				fixed4 col = 2.0f * i.color * _TintColor * tex2D(_MainTex, i.texcoord);

				col.a *= (i.vpos.x >= _MinX);
				col.a *= (i.vpos.x <= _MaxX);
				col.a *= (i.vpos.y >= _MinY);
				col.a *= (i.vpos.y <= _MaxY);
				col.rgb *= col.a;

				UNITY_APPLY_FOG_COLOR(i.fogCoord, col, fixed4(0,0,0,0)); // fog towards black due to our blend mode
				return col;
			}

4.效果演示:

5.接口易用性:

在需要遮住粒子特效的GameObject上面挂上MaskParticle脚本即可。

设置遮罩范围。

MaskParticle.SetMaskRectTr(RectTransform rect)

设置遮罩跟随设置的范围。

MaskParticle.SetMaskUpdate(RectTransform rect)

6.环境:

Unity3D 2020.3.48

7.GitHub地址:https://github.com/MyTestProjectYour/Unity3d-ParticleMask/tree/main

记得给个星星哟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一路随云00000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值