前言

再介绍一个简单的效果,贴图切换,根据目标距离远近切换贴图

贴图切换

先看效果

随着小黄鸭的移动,贴图以小黄鸭中心为半径变化。这个方法可以做出许多效果,如放大镜效果,画圆形遮罩等

原理分析

  • 主要就是根据提供的目标点(也就是小黄鸭的中心点)和贴图的距离进行不同的采样

具体实现

Shader "Unlit/TextureSwitch"
{Properties{_PlayerPos("Player position",vector) = (0.0,0.0,0.0,0.0)//玩家位置_Dist("Distance",float)= 5.0//与玩家中心点的距离_MainTex ("Texture", 2D) = "white" {}//第一张贴图_SecondayTex("Secondary texture",2D) = "white"{}//第二张贴图}SubShader{Tags { "RenderType"="Opaque" }Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct v2f{float4 pos:SV_POSITION;//插值后的位置信息float2 uv : TEXCOORD0;//插值后的uv坐标float4 worldPos:TEXCOORD1;//插值后的世界坐标};float4 _PlayerPos;//玩家位置sampler2D _MainTex;//第一张贴图sampler2D _SecondayTex;//第二张贴图float _Dist;//距离v2f vert (appdata_base v){v2f o;o.worldPos = mul(unity_ObjectToWorld,v.vertex);//将顶点坐标转成世界坐标,unity_ObjectToWorld是UnityCG.cginc中内置的矩阵o.pos = UnityObjectToClipPos(v.vertex);//裁剪,规范化坐标o.uv = v.texcoord;//uv坐标return o;}fixed4 frag (v2f i) : SV_Target{if(distance(_PlayerPos.xyz,i.worldPos.xyz)>_Dist){//当前片段位置与玩家位置的距离大于_Dist,采样第一张贴图return tex2D(_MainTex,i.uv);}else{//小于_Dist采样第二张贴图return tex2D(_SecondayTex,i.uv);}}ENDCG}}
}

为了便于观察,写一个脚本动态设置玩家位置

public class TextureSwitch : MonoBehaviour {private Material Mat;private GameObject Player;public float Radius = 10;void Start(){Mat = GetComponent<Renderer>().material;Player = GameObject.Find("Player");}private int direction = 1;//移动的方向,1向右,-1向左private float speed = 0.5f;void Update(){var pos = Player.transform.position;pos.x += direction*Time.deltaTime*speed;if(pos.x>=1.5f){//当大于1.5f时改变移动方向direction = -1;}if(pos.x<=-1.5f){//当小于-1.5f时改变移动方向direction = 1;}Player.transform.position = pos;Mat.SetVector("_PlayerPos",Player.transform.position);//设置玩家位置Mat.SetFloat("_Dist",Radius);//设置距离}
}

总结

这个shader虽然简单,但在做一些效果时还是可以有些启发,变通,如需配套代码,可以从作者github获取

Koo叔说Shader-贴图切换相关推荐

  1. 一款jQuery满屏自适应焦点图切换特效

    一款jQuery满屏自适应焦点图切换特效 ,自适应当前浏览器的宽度,可以作为网站整个大背景的却换效果,很不错的一款不jquery特效. 兼容性没的说直接秒杀了IE6.适用浏览器:IE6.IE7.IE8 ...

  2. layui轮播图切换会有跳动_Layui中轮播图切换函数说明

    ### Layui中轮播图切换函数说明 ### ##### 官方文档 [链接][Link 1] ##### ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdG ...

  3. jQuery插件_SuperSlide插件(焦点图切换、标签切换、多个slide组合)

    SuperSlidev1.2 SuperSlide 是致力于实现网站统一特效调用的函数,能解决大部分标签切换.焦点图切换等效果,还能多个slide组合创造更多的效果.(兼容ie内核(包括无敌的ie6) ...

  4. 简单的Jquery焦点图切换效果

    利用Jquery,优雅的实现焦点图切换 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &quo ...

  5. swiper轮播图切换指示点改变背景颜色

    swiper 官方api文档:https://www.swiper.com.cn/api/index.html 如果有一个页面中需要引用多个Swiper,可以给每个容器加上ID或Class区分,但是需 ...

  6. 使用html仿支付宝首页,jQuery实现仿Alipay支付宝首页全屏焦点图切换特效

    本文实例讲述了jQuery实现仿Alipay支付宝首页全屏焦点图切换特效.分享给大家供大家参考.具体实现方法如下: /p> "http://www.w3.org/TR/xhtml1/D ...

  7. banner轮播图切换插件

    下载地址 banner轮播图切换插件,基于jquery实现的图片轮播效果. dd:

  8. JavaScript之衣服相册切换效果(类似淘宝商品图切换)

    JavaScript之衣服相册切换效果(类似淘宝商品图切换) 话不多说,直接上代码: <!DOCTYPE html> <html lang="en"> &l ...

  9. html 折叠焦点图切换,jQuery层叠式图片切换焦点图插件

    本文作者html5tricks,转载请注明出处 之前我们为大家分享过一款jQuery内容层叠滚动切换动画插件,主要是针对文字的层叠式切换.今天要介绍的也是一款层叠式切换插件,不过它是一款 下面我们一起 ...

  10. 利用CSS3动画属性实现轮播图切换图片时出现附近内容抖动的解决办法。

    利用CSS的动画完成轮播图功能,切换图片时发现,在QQ浏览器上轮播图切图时会影响附近内容抖动导致看起来模糊. 如下图: 轮播图切图时下面的内容:"办公家具"."更多&qu ...

最新文章

  1. Asp.net 不安全端口 解决chrome浏览器访问时提示:ERR_UNSAFE_PORT
  2. poj 3349 雪花
  3. arcgis java api_Arcgis API For Javascript下载与安装
  4. 联想B450系列安装XP且开启AHCI
  5. 【转】游戏编程中的人工智能技术--神经网络
  6. 基本图形的光栅化算法
  7. Jsp+Ssm+Mysql实现简单的物流快递管理
  8. 【交换机】配置RNStrack的功能原理是什么?
  9. [hdu5628]Clarke and math(dirichlet卷积)
  10. 计算机考研安大好考还是郑大好考,这5所“低调到隐形”的211大学,不仅分数低,还好考...
  11. android开发的小程序,一份基于Android平台系统下初学者开发的微信小程序的新
  12. Keil uVision5 MDK-ARM 程序使用—————中文图解
  13. 编程语言为什么不能用中文
  14. Hello World~Miracle is coming!!!
  15. 如何处理httpclient的ssl错误
  16. Kubeadm手动更新证书
  17. ByteBuffer Converting CharBuffer
  18. 拍照扫描怎么弄?你可以试一下这两个方法
  19. 软件外包项目管理实务
  20. asp.net word操作

热门文章

  1. 旭辉完成2020年销售目标:还要加码广西,却在北京违规被通报
  2. 计算机网络之物理层,数据链路层,网络层 学习笔记
  3. 关于DJI Phantom 3 Advanced大疆精灵3A遥控器固件升级问题的解决办法
  4. 【达梦数据库DM8】DM8基本操作及DCA考试感悟分享
  5. 无线键鼠接收器配对怎么就那么难?简直就是浪费
  6. navigateTo:fail can not navigateTo a tabbar page
  7. take off用法
  8. Android中使用SVG矢量图打造多边形图形框架
  9. LSF Command
  10. 博士申请 | 浙江大学孙优贤院士课题组招收智能无人系统方向硕士生/博士生