Unity2D-URP基于ShaderGraph创建带粒子特效的激光光束

文章目录

    • 创建Shader
      • 新建Node: UV
      • 新建Node: Split
      • ......
      • 参数说明
    • 基于Shader创建Material
    • 创建Line
    • 创建粒子系统StartVFX
    • 创建粒子材质
    • 更改粒子系统的材质
    • 设置透明模式
    • 设置粒子效果
    • 创建一个Beam
    • 设置EndVFX
    • 效果预览
    • 激光光束管理脚本
    • 最终预览

创建Shader

Create --> Shader Graph --> URP -->Sprite Lit Shader Graph,命名为Xray

新建Node: UV

Create Node:UV

新建Node: Split

懒得码字了,直接上图来连一连,

注意:颜色模式统统选择HDR



设置完左上角记得保存

参数说明

Width:激光光束的宽度
Color:激光光束的颜色
Speed:激光光束的闪烁速度
Scale:激光光束的缩放


基于Shader创建Material

鼠标右键刚刚保存的Shader,然后创建Material,命名为XrayMaterial


创建Line

创建一个空物体对象,在子级创建一个Line

创建粒子系统StartVFX

在Line同级下创建一个空物体,在创建一个粒子系统

创建粒子材质

新建一个Material,shader和base map如图:

更改粒子系统的材质

设置透明模式

去除黑色部分修,改刚刚新建的材质,Surface Type选择Transparent

设置粒子效果

这些设置随自己的喜好修改




粒子由大变小或者由小变大

创建一个Beam

基于刚刚设置的粒子系统,复制一份命名为Beam, 修改一下设置

关闭 Size over lifetime


把大小改大,速度改为0,生命周期改小

设置EndVFX

复制StartVFX, 命名为EndVFX
在这里插入图片描述
posion的X轴根据Line的长度来设置


效果预览



激光光束管理脚本

在上面的预览效果图中还没写管理脚本,给他添加一个,挂载到Xray

using Unity.Mathematics;
using UnityEngine;public class XrayController : MonoBehaviour
{public static XrayController Instance;public GameObject HittedGameObject { get; private set; }[SerializeField]private Color xrayColor = Color.red;[SerializeField]private int xrayLength = 10;[SerializeField]private float xraySpeed = 1.0f;[SerializeField]private float xrayWidth = 1.0f;private LineRenderer lineRenderer;private Transform startVFX;private Transform endVFX;private void Awake(){Instance = this;}private void Start(){lineRenderer = GetComponentInChildren<LineRenderer>();startVFX = transform.GetChild(1);endVFX = transform.GetChild(2);UpdateEndPosition();}private void Update(){UpdateEndPosition();}private void UpdateEndPosition(){Vector2 position = transform.position;float rotation = transform.rotation.eulerAngles.z;rotation *= Mathf.Deg2Rad;var direction = new Vector2(Mathf.Cos(rotation), Mathf.Sin(rotation));var hit = Physics2D.Raycast(position, direction.normalized);float length = xrayLength;float xrayEndRotation = 180;if (hit){HittedGameObject = hit.collider.gameObject;length = (hit.point - position).magnitude;xrayEndRotation = Vector2.Angle(direction, hit.normal);Debug.Log(xrayEndRotation);}lineRenderer.SetPosition(1, new Vector2(length, 0));Vector2 endPositon = position + direction * length;startVFX.position = position;endVFX.position = endPositon;endVFX.rotation = quaternion.Euler(0, 0, xrayEndRotation);}
}

最终预览

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/178023.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

零信任、SASE还在因不标准的身份系统难对接而无法发挥真正力量?这份标准化的解决方案助您一臂之力

身份安全是网络安全的一个重要领域&#xff0c;旨在确保用户的身份安全可信&#xff0c;防止未经授权的访问和数据泄漏等问题。目前主流的信息安全趋势强调可持续验证、多源信任评估、动态防护、可持续数据防护、一体化安全审计等&#xff0c;特别是零信任、SASE等技术均以身份…

macOS/Ubuntu - ftp 工具

文章目录 Ubuntu - FilezillamacOS - Termius Ubuntu - Filezilla 安装 sudo apt-get install filezilla查看版本 filezilla --version启动 filezilla你也可以下载安装包&#xff1a; https://filezilla-project.org/download.php 解压 FileZilla_3.66.1_x86_64-linux-gnu…

vue elementUI 自定义框组织树,选择select下拉组织树横行滑动条出现方法

背景&#xff1a;最近公司开发需要使用到组织树进行组织结构的选择&#xff0c;在开发途中遇到两个次组织树已超过外框&#xff0c;但超出部分不显示横向滑动条。 自定义组织树框代码如下&#xff1a; <el-row><el-col :span"20" style"padding: 0px…

《数据结构、算法与应用C++语言描述》-线索二叉树的定义与C++实现

_23Threaded BinaryTree 可编译运行代码见&#xff1a;GIithub::Data-Structures-Algorithms-and-Applications/_24Threaded_BinaryTree 线索二叉树定义 在普通二叉树中&#xff0c;有很多nullptr指针被浪费了&#xff0c;可以将其利用起来。 首先我们要来看看这空指针有多少…

Leetcode刷题之设计循环队列(C语言版)

Leetcode刷题之设计循环队列&#xff08;C语言版&#xff09; 一、题目描述二、题目示例三、题目解析Ⅰ、typedef structⅡ、MyCircularQueue* myCircularQueueCreate(int k)Ⅲ、bool myCircularQueueIsEmpty(MyCircularQueue* obj)Ⅳ、bool myCircularQueueIsFull(MyCircularQ…

Spring加载Bean的多种方式

文章目录 1. XML方式定义2. 使用Component ComponentScan3. 使用Configuration Bean4. 使用FactoryBean的方式加载bean5. Import方式6. Import ImportSelector7. Import ImportBeanDefinitionRegistrar8. 实现接口BeanDefinitionRegistryPostProcessor9. 实现接口BeanFacto…

P19 C++ 构造函数的成员初始化列表

目录 前言 01 如果不用成员列表如何初始化变量 02 成员列表初始化 03 为什么要使用成员列表初始化呢&#xff1f; 04 案例代码 前言 本期我们聊聊构造函数初始化列表。 你应该经常使用成员初始化列表&#xff0c;如果你不喜欢这种代码风格&#xff0c;建议你还是慢慢习惯吧…

MFC mysql 往数据库中写路径时,斜杠消失

写入时发现数据库中路径为&#xff1a; E:wokspacePROJECTThirdTrailInspectioncode_cttrmeasureBSVbinimage_guidipzjt-20231113145420_下行mdx-1-5_li339.44_1.jpg 因为转义字符的存在&#xff0c; 解决办法&#xff1a; MFC的在CString转string之前&#xff0c;将\\替换掉…

立即修复计算机显示msvcp110.dll丢失问题!4个快速解决方法大揭秘

在计算机使用过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中之一就是“msvcp110.dll丢失”。这个错误通常会导致某些程序无法正常运行&#xff0c;给用户带来诸多不便。那么&#xff0c;当我们遇到这个问题时&#xff0c;应该如何进行修复呢&#xff1f;本文将…

搭建一个可以发送邮箱验证码的接口,内含前端处理 接口返回、请求处理

环境搭建 在node安装好的情况下&#xff08;一般vue环境有的node也有 没有可以使用winr回车输入node -v 有版本号则已经安装好 找一个空文件夹作为此项目文件夹 点击上面的地址栏输入cmd回车 输入npm init -y 再输入npm install nodemailer安装发送邮件的插件 环境配置 使用v…

oracle基础系统学习文章目录

oracle基础系统学习——点击标题可跳转对应文章 01.CentOS7静默安装oracle11g02.Oracle的启动过程03.从简单的sql开始04.Oracle的体系架构05.Oracle数据库对象06.Oracle数据备份与恢复07.用户和权限管理08.Oracle的表09.Oracle表的分区10.Oracle的同义词与序列11.Oracle的视图1…

vue3中toRef创建一个ref对象

为源响应式对象上的某个属性创建一个 ref对象, 二者内部操作的是同一个数据值, 更新时二者是同步的 区别ref: 拷贝了一份新的数据值单独操作, 更新时相互不影响 应用: 当要将 某个prop 的 ref 传递给复合函数时&#xff0c;toRef 很有用 父组件代码: <template><…

搜索的剪枝

1.可行性剪枝:如果继续搜下去已经不能得到答案,就return 2.排除等效冗余:在搜索的几个分支中具有完全相同的效果时,选择其中一个走即可 3.最优性剪枝:如果题目要求是最大&#xff0c;最小之类的,没搜到一个解&#xff0c;和之前的解作对比&#xff0c;如果不如之前搜到的&…

js 深度学习(八)

原型及原型链 prototype是function对象的一个属性 它也是一个对象 prototype是定义构造函数构造出的每个对象的公共祖先 所以被该构造函数构造出来的对象 都可以继承原型上的属性和方法 自己有的属性不会去原型上找 方法写在原型上 属性写在构造函数内部 __proto__是实例化以后…

关于easy-es的聚合问题-已解决

es实体类&#xff1a; public class ChemicalES {IndexId(type IdType.CUSTOMIZE)private Long id;HighLightIndexField(fieldType FieldType.TEXT, analyzer "ik_max_word")private String name;IndexField(fieldType FieldType.KEYWORD)private List<Stri…

nginx 配置跨域(小皮面板)

本地开发的时候&#xff0c;前端请求后端&#xff0c;后端不能用域名请求&#xff0c;只能用端口模式&#xff0c;在小皮面板的话就是如下配置&#xff1a; 我的测试项目部署&#xff1a; 前端&#xff1a;http://localhost:8082 后端&#xff1a;http://localhost:8081 前端…

二百零八、Hive——HiveSQL异常:Select查询数据正常,但SQL语句加上group by查询数据为空

一、目的 在HiveSQL的DWD层中&#xff0c;需要对原始数据进行去重在内的清洗&#xff0c;结果一开始其他数据类型的清洗工作都正常&#xff0c;直到碰到转向比数据。 一般的SQL查询有数据&#xff0c;但是加上group by以后就没数据&#xff1b; 一般的SQL查询有数据&#xf…

Python实现WOA智能鲸鱼优化算法优化XGBoost分类模型(XGBClassifier算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 鲸鱼优化算法 (whale optimization algorithm,WOA)是 2016 年由澳大利亚格里菲斯大学的Mirjalili 等提…

uniapp基础-教程之HBuilderX基础常识篇02

uniapp创建项目时属性多为vue后缀&#xff1b;其中每个文件中都包含了三段式结构分别是template&#xff1b;script&#xff1b;style形势&#xff0c;分别是前端显示的画面以及js和css样式。 template&#xff1a;说大白话就是给别人看的&#xff0c;我们打开页面就可以看到的…

商城系统通过Kafka消息队列,实现订单的处理和状态更新springboot例子解决并发处理、数据一致性等问题

在商城系统中&#xff0c;订单的处理和状态更新是非常关键的部分&#xff0c;需要保证并发处理和数据一致性。使用Kafka消息队列可以很好地解决这些问题。 下面是一个使用Kafka消息队列实现订单处理和状态更新的Spring Boot例子&#xff1a; 1. 添加Kafka依赖 在pom.xml文件…