shader实例:实现类似宝可梦 Pokemon 的战斗转场
宝可梦游戏在进入战斗前会有类似这样转场动画。
例子中使用的纹理质量较差,边缘比较模糊,和shader无关。
这个UI是盖在所有UI最前面的。可以使用shader来完成这个工作,而不是复杂的动画。
使用一张这样的灰度图,用动画控制cutoff值来决定产生遮罩的像素从而产生动画。
Shader 代码如下:
Shader "UI/UITransitions"
{// 通过材质可以控制的变量,使用inspector设置Properties{_MainTex("Texture", 2D) = "white" {}_TransitionTex("Transition Texture", 2D) = "white" {}_Color("Screen Color", Color) = (1,1,1,1)_Cutoff("Cutoff", Range(0, 1)) = 0_Fade("Fade", Range(0, 1)) = 0}// 对应多个变体。如:一个subshader给pc用,另一个给手机用SubShader{// 不剪切背表面、不写z、ztest永远通过Cull Off ZWrite Off ZTest Always// 每个pass会渲染一次物体。如:一个pass处理平行光,再加一个处理点光Pass{// Unity的HLSL开始的地方,ENDCGCGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"// semantic 指明值怎么用,如:TEXCOORD0在ps中会得到插值struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};// SV_POSITION SV_ ( system value )struct v2f{float4 vertex : SV_POSITION;float2 uv : TEXCOORD0;float2 uv1 : TEXCOORD1;};float4 _MainTex_TexelSize;// 每顶点处理v2f vert(appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = v.uv;o.uv1 = v.uv;// 统一dx和gl对于uv的取值方式// _TexelSize: https://docs.unity3d.com/Manual/SL-PlatformDifferences.html#if UNITY_UV_STARTS_AT_TOPif (_MainTex_TexelSize.y < 0)o.uv1.y = 1 - o.uv1.y;#endifreturn o;}// 对应Properties中的名称,才可以使用sampler2D _MainTex;sampler2D _TransitionTex;fixed4 _Color;float _Cutoff;float _Fade;// 每像素处理// 需要指定 SV_Target(也就是frame buffer屏幕上看到的图像)fixed4 frag(v2f i) : SV_Target{fixed4 transit = tex2D(_TransitionTex, i.uv1);fixed4 col = tex2D(_MainTex, i.uv);// 小于cutoff值,使用_Color插值此像素if (transit.r < _Cutoff)return col = lerp(col, _Color, _Fade);return col;} ENDCG}}
}
完整unity package 已经上传
shader已经详细中文注解
如何使用:
1 导入package
2 打开UITransitions Scene
3 选择UITransitions 材质,调整属性、更换mask图
4. Properties说明:
Transition Texture :遮罩纹理
Screen Color: 遮罩颜色
Cutoff : 遮罩大小(需要用动画去控制的值)
Fade: 遮罩混合度
完整unity package 已经上传
shader已经详细中文注解
更多Shader实例
shader实例:实现类似宝可梦 Pokemon 的战斗转场相关推荐
- pokemon 下载 android,宝可梦pokemon home
宝可梦pokemon home是一款非常好玩的卡通画风的模拟经营游戏,游戏名为宝可梦pokemon home,这款游戏的背景就是大家相当熟悉的宝可梦,宝可梦pokemon home这款游戏的操作难度不 ...
- python 宝可梦_Python数据分析 | 宝可梦篇2
目标: 一.各种族系数量占比 二.各世代宝可梦数量 三.种族值解析 四.传说宝可梦相关分析,各时代占比,属性值与传说宝可梦的相关性,种族系与传说宝可梦的相关性 五.各世代推荐宝可梦 #导入三个Pyth ...
- 乱谈精灵宝可梦Go(Pokemon Go)
精灵宝可梦Go(Pokemon Go)是去年任天堂推出的一款手游,全球大热,短短一周的时间跃居美国Google Play下载量第一,上线三天任天堂股价暴涨90亿美金.而我的专业恰好和这个游戏挺相关的. ...
- android wear 神奇宝贝,宝可梦Home安卓版下载_宝可梦Home手机app官方版(Pokemon Home) v1.0.3-安族游戏网...
宝可梦Home安卓版(Pokemon Home)是基于云技术所打造的一款云端服务app,该应用能够连接不同的设备,并且通能够同步不同设备的宝可梦进行宝可梦数据交换,同时移动端也能够和ns端利用此应用来 ...
- 宝可梦合体再次流行?Pokemon Fusion的技术实现
Axie Infinity 是一款灵感来自宝可梦的宠物繁殖战斗游戏.玩家需要先买入 3 只宠物才能开始,宠物可以培育新的品种,战斗过程中可以赚取奖励,同时宠物可被出售. 培育.繁殖新的品种,让玩家有 ...
- 如何编写和精灵宝可梦一样的 app?
原文:How To Make An App Like Pokemon Go 作者:Jean-Pierre Distler 译者:kmyhy 如今最流行的一个手机游戏就是精灵宝可梦.它使用增强现实技术将 ...
- 宝可梦小游戏_Java_控制端——总结
宝可梦&伏魔录 小游戏_Java_控制端:小总结 文章目录 宝可梦&伏魔录 小游戏_Java_控制端:小总结 前言 一.简述 二.宝可梦项目 1.设计思想 2.宝可梦项目总结 1. 前 ...
- 5 年营收超 50 亿美元,「宝可梦」游戏是怎么做到的?
本文转载自极客公园 仅用了一个 GPS 定位,就在游戏领域长出了一个新巨头 近日,时值<精灵宝可梦 Go>(Pokemon Go,以下简称<宝可梦 Go>)五周年之际,数据显示 ...
- 给终端装上宝可梦主题!小姐姐路过都爱上了!
大家好,我是TJ 一个励志推荐10000款开源项目与工具的程序员 就算不怎么玩游戏看动漫的小伙伴,多多少少也应该知道宠物小精灵,按现在的叫法,就是精灵宝可梦,知道那只黄色的会放电的看着毛茸茸超可爱的只 ...
最新文章
- CSU 1806 Toll 自适应simpson积分+最短路
- matlab 高斯模糊_摸鱼 | 茴香豆的“茴”有四种写法,模糊有几种糊法?
- 如何编辑ttf字体文件
- Win10验证USB Audio MIC(三)
- c#modbus tcp通讯助手开源_Modbus 调试助手的使用(一)
- 推荐几个SQL在线学习网站
- 如何将音乐上传到YouTube音乐
- JAVA静态变量 静态方法 两者间的区别 继承的特点 继承中的成员变量关系和成员方法 构造方法
- 《玩透嵌入式C的角角落落》深入分析sprintf和printf函数
- 微信升级外链管理规范,「砍一刀帮我加速」要被禁止了
- spring框架_IOC_DI_AOP_MVC
- “师创杯”山东理工大学第九届ACM程序设计竞赛 正式赛 F.校赛~校赛~【思维+规律题】
- 蓝桥杯——单片机设计与开发初学者必备资料
- 服务器开发系列(三)——Linux与Windows操作系统基础功能对比
- 轻社区的“赚钱术”:免费社区赚钱,去年利润1个亿
- Nero 7 Premium Reloaded 7.8.5.0
- Vlookup函数和Sumif函数详解
- Mituan-极客时间-漏洞挖掘与智能攻防实战
- 关于STL模板的使用效率与控制输出时最后不加空格问题
- 计算机专业入学讲座,新生入学教育——计算机专业介绍