博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【原】unity3d刀光闪过
阅读量:5061 次
发布时间:2019-06-12

本文共 1599 字,大约阅读时间需要 5 分钟。

shader文件:

Shader "Custom/Logo" {

    Properties {
        _MainTex ("Texture", 2D) = "white" { }
        _Spec ("Texture", 2D) = "white" { }//透明渐变的图
    }
    SubShader
    {
        pass
        {
        Tags {"IgnoreProjector"="True" "RenderType"="Transparent"}
    
            ZWrite off
            Blend SrcAlpha OneMinusSrcAlpha
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"
            sampler2D _MainTex;
            sampler2D _Spec;
            
            float _show;
            float4 _MainTex_ST;
            float4 _Spec_ST;
            struct v2f {
                float4  pos : SV_POSITION;
                float2  uv : TEXCOORD0;
                float2  uv2 : TEXCOORD1;
            } ;
            v2f vert (appdata_base v)
            {
                v2f o;
                o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
                o.uv = TRANSFORM_TEX(v.texcoord,_MainTex);
                
                o.uv2 = TRANSFORM_TEX(v.texcoord,_Spec);
                return o;
            }
            float4 frag (v2f i) : COLOR
            {
                 float4 outp;
                float4 texCol = tex2D(_MainTex,i.uv);
                
                float4 texSpec = tex2D(_Spec,i.uv2);
                outp = texCol;
                
                if(texCol.w > 0.5)
                {
                       outp += float4(texSpec.x,texSpec.y,texSpec.z,1)*texSpec.w ;
                }
                
                if(_show >0)
                    return outp;
                else
                    return texCol;
            }
            ENDCG
        }
    }
    
    Fallback "Unlit/Transparent"
}

shaderController:

public class ShaderControll : MonoBehaviour {

   
    bool flag;
    // Use this for initialization
    void Start () {
        flag=false;
    
   InvokeRepeating("Fire",1,2);
    }
    
    // Update is called once per frame
    void Update () {
        if(flag)
            {
                renderer.material.SetFloat("_show",1);
                
                renderer.material.SetTextureOffset("_Spec",new Vector2(1 * Time.time,0));
            }
            else
            {
                renderer.material.SetFloat("_show",-1);
            }
    }
    
    
    void Fire()
    {
        renderer.material.SetTextureOffset("_Spec",new Vector2(0,0));
        flag=true;
        Invoke("SetFlag",0.5f);
    }
    void SetFlag()
    {
        flag=false;
    }
}

 

转载于:https://www.cnblogs.com/U-tansuo/archive/2013/04/03/unity3d_shader11.html

你可能感兴趣的文章
dwz ie10一直提示数据加载中
查看>>
Windows Phone开发(4):框架和页 转:http://blog.csdn.net/tcjiaan/article/details/7263146
查看>>
Windows Phone Marketplace 发布软件全攻略
查看>>
Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)【转】
查看>>
语义web基础知识学习
查看>>
hexo个人博客添加宠物/鼠标点击效果/博客管理
查看>>
python asyncio 异步实现mongodb数据转xls文件
查看>>
关于WPF的2000件事 02--WPF界面是如何渲染的?
查看>>
单元测试、、、
查看>>
SVN使用教程总结
查看>>
JS 浏览器对象
查看>>
TestNG入门
查看>>
【ul开发攻略】HTML5/CSS3菜单代码 阴影+发光+圆角
查看>>
虚拟中没有eth0
查看>>
Unity 3D游戏开发学习路线(方法篇)
查看>>
BZOJ2049[Sdoi2008]Cave 洞穴勘测(LCT模板)
查看>>
vuex插件
查看>>
2011年12月09日
查看>>
[ZJOI2007]棋盘制作 【最大同色矩形】
查看>>
合并单元格
查看>>