一个简单的2D闪烁效果
国际惯例,先上图

先网上随便找个序列图,切割一下做成动画
然后给spriterenderer设置材质
Shader "Sprites/Diffuse Flash"{Properties{[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}_SelfIllum ("Self Illumination",Range(0.0,1.0)) = 0.0_FlashAmount ("Flash Amount",Range(0.0,1.0)) = 0.0_Color ("Tint", Color) = (1,1,1,1)[MaterialToggle] PixelSnap ("Pixel snap", Float) = 0}SubShader{Tags{ "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane""CanUseSpriteAtlas"="True"}Cull OffLighting OffZWrite OffFog { Mode Off }Blend SrcAlpha OneMinusSrcAlphaCGPROGRAM#pragma surface surf Lambert alpha vertex:vert#pragma multi_compile DUMMY PIXELSNAP_ONsampler2D _MainTex;fixed4 _Color;float _FlashAmount,_SelfIllum;struct Input{float2 uv_MainTex;fixed4 color;};void vert (inout appdata_full v, out Input o){#if defined(PIXELSNAP_ON) && !defined(SHADER_API_FLASH)v.vertex = UnityPixelSnap (v.vertex);#endifv.normal = float3(0,0,-1);UNITY_INITIALIZE_OUTPUT(Input, o);o.color = _Color;}void surf (Input IN, inout SurfaceOutput o){fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * IN.color;o.Albedo = lerp(c.rgb,float3(1.0,1.0,1.0),_FlashAmount);o.Emission = lerp(c.rgb,float3(1.0,1.0,1.0),_FlashAmount) * _SelfIllum;o.Alpha = c.a;}ENDCG}Fallback "Transparent/VertexLit"}
开始撸代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
[RequireComponent(typeof(SpriteRenderer))]
public class flash : MonoBehaviour {public AnimationCurve m_Curve;public float m_duration = 1;private SpriteRenderer m_spriteRenderer;private Material m_Material;// Use this for initializationvoid Start () {m_spriteRenderer = GetComponent();m_Material =m_spriteRenderer.material;}IEnumerator EvaluateCureve(UnityAction update){float time = 0;while (time<=m_duration){float value = m_Curve.Evaluate(time / m_duration);time += Time.deltaTime;update.Invoke(value);yield return null;}}public void OnMouseDown(){StartCoroutine(EvaluateCureve((value)=>m_Material.SetFloat("_FlashAmount",value)));}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
