unity 渐变消失_Unity ShaderGraph 实现 Gradients 渐变 (2D)

在开发《Anchor》的时候发现 Unity 暂时不支持在代码中直接替换 gradient,且无法 expose 在 inspector 中,因此想出个笨办法来解决。另在 shader 中做了大于 2 色的 gradient。

OverviewSprite Unlit Master

用 Shader 创建 Material 并应用在 sprite 上

shader 一共三个部分:Original Gradient、Target Gradient、Lerp Control

GradientOriginal 和 Target 一样

按 gradient 的 colorkey 个数可以自行添加更多 Lerp Node

Lerp ControlLerpStatus 可以看作是 A 到 B 的百分比进度,被限制在 0 到 1 之间,可以按需修改成 Time Node 等

属性总览

代码随便放在谁身上,inspector 中调好想要的 gradients

测试用,写的粗糙了点

public SpriteRenderer spriteRenderer;

//Inspector 中自己设置的 Gradients

public Gradient gradientOriginal;

public Gradient gradientTarge

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现角色消失、溶解或隐身的效果可以使用Unity Shader编写。一种常用的方法是使用渐变进行角色的消失或出现。 以下是一个简单的Unity Shader代码示例,用于实现角色消失的效果: ``` Shader "Custom/Disappear" { Properties { _MainTex ("Texture", 2D) = "white" {} _Cutoff ("Alpha cutoff", Range(0,1)) = 0.5 _FadeRange ("Fade range", Range(0,1)) = 0.1 } SubShader { Tags {"Queue"="Transparent" "RenderType"="Opaque"} LOD 100 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; }; sampler2D _MainTex; float _Cutoff; float _FadeRange; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = v.uv; return o; } fixed4 frag (v2f i) : SV_Target { fixed4 col = tex2D(_MainTex, i.uv); float alpha = col.a; float dist = abs(i.uv.y - 0.5); alpha = smoothstep(_Cutoff - _FadeRange, _Cutoff + _FadeRange, alpha); alpha *= smoothstep(0, _FadeRange, dist); col.a = alpha; return col; } ENDCG } } } ``` 在这个Shader中,我们使用_MainTex来获取角色的纹理。_Cutoff和_FadeRange分别控制渐变的起点和终点。在fragment shader中,我们使用smoothstep函数来实现渐变效果,并使用dist变量来控制渐变的位置,使角色从中心开始渐变消失。 你可以将这个Shader应用到角色的材质中,然后使用代码控制_Cutoff和_FadeRange参数来实现角色的消失效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值