当前位置: 首页 > news >正文

Unity Shader当用户靠近的时候会出现吃鸡一样的光墙

效果图片
在这里插入图片描述
靠近墙壁

在这里插入图片描述
远离墙壁
材质球的设置

在这里插入图片描述

两张图片
在这里插入图片描述

在这里插入图片描述

使用方式
把这个脚本放到墙上,将player赋值给"_player",然后运行,用户靠近就会根据距离显示光墙。

using UnityEngine;public class NewBehaviourScript : MonoBehaviour
{private Material _mat;public GameObject _player;private void Start(){_mat = gameObject.GetComponent<MeshRenderer>().materials[0];Debug.Log(_player.transform.position);}private void Update(){_mat.SetVector("_PlayerPos", _player.transform.position);}
}

shader代码

Shader "Unlit/NewUnlitShader"
{Properties{_MainTex ("Texture", 2D) = "white" {}
_MulTex ("MulTex",2D)="White" {}_Color ("Color",Vector)=(1,1,1,0)_PlayerPos("PlayerPos",Vector)=(1,1,1,0)_EdgeRange("EdgeRange",Vector)=(2,6,0,0)
_uvSpeed("uvSpeed",vector)=(1,0,0,0)}SubShader{Tags { "RenderType"="Transparent" "Queue"="Transparent" }Blend  SrcAlpha OneMinusSrcAlphaPass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;float2 uv2:TEXCOORD2;};struct v2f{float2 uv : TEXCOORD0;
float2 uv2:TEXCOORD2;float4 vertex : SV_POSITION;float4 vertexWorldPos : TEXCOORD1;};sampler2D _MainTex;sampler2D _MulTex;float4 _MainTex_ST;float4 _MulTex_ST;float4 _PlayerPos;float4 _EdgeRange;
float4 _uvSpeed;
float4 _Color;v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = TRANSFORM_TEX(v.uv, _MainTex);o.uv2 = TRANSFORM_TEX(v.uv2, _MulTex);
o.uv2+=_Time.x*_uvSpeed;o.vertexWorldPos= mul(unity_ObjectToWorld,v.vertex);return o;}fixed4 frag (v2f i) : SV_Target{
float dis=abs(distance(i.vertexWorldPos,_PlayerPos));
float4 tex=tex2D(_MainTex,i.uv);
float4 tex2=tex2D(_MulTex,i.uv2);
float4 color1=_Color;tex.a*= 1 - smoothstep(_EdgeRange.x,_EdgeRange.y,dis);fixed4 col = tex2D(_MainTex, i.uv);return tex*color1*tex2;}ENDCG}}
}

教程URL


http://www.lryc.cn/news/208559.html

相关文章:

  • Xcode iOS app启用文件共享
  • STM32H750之FreeRTOS学习--------(二)任务的创建和删除
  • Kafka - 3.x Producer 生产者最佳实践
  • 对于多分类问题,使用深度学习(Keras)进行迁移学习提升性能
  • Python----break关键字对while...else结构的影响
  • js实现将文本生成二维码(腾讯云cos)
  • 机架式服务器介绍
  • 解决github有时能访问有时不能访问的问题2
  • Go实现网络通信
  • 在antd里面渲染MarkDown并且自定义一个锚点目录TOC(重点解决导航目录不跟随文档滚动的问题)
  • Linux MMC子系统 - 2.eMMC 5.1总线协议浅析
  • 时序预测 | Python实现ARIMA-LSTM自回归移动差分模型结合长短期记忆神经网络时间序列预测
  • 【Linux】部署单机OA项目及搭建spa前后端分离项目
  • 2023中国计算机大会:蚂蚁集团连发两支百万级科研基金
  • Knife4j使用教程(三) -- 实体类的配置注解(@ApiModel与@ApiModelProperty 的 认识与使用)
  • 计算机网络【CN】IPV4报文格式
  • SQL server数据库单用户模式如何退出
  • QT mqtt 在子线程中使用
  • Tomcat运维以及优化
  • C++设计模式_14_Facade门面模式
  • 正点原子嵌入式linux驱动开发——外置RTC芯片PCF8563
  • 自动驾驶感知算法面经(20+)
  • 计算机操作系统重点概念整理-第二章 进程管理【期末复习|考研复习】
  • 如何学好C++?学习C和C++的技巧是什么?
  • leetcode_39 组合总和
  • 【登录安全测试】
  • MySQL -- 数据类型
  • Windows11搭建kafka-python环境
  • 一篇了解springboot3请求参数种类及接口测试
  • CFD模拟仿真理论知识:流体仿真应用