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);
    }
}

最终预览

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis面试题:Redis的数据淘汰策略有哪些?

目录 面试官&#xff1a;Redis的数据淘汰策略有哪些 ? 面试官&#xff1a;数据库有1000万数据 ,Redis只能缓存20w数据, 如何保证Redis中的数据都是热点数据 ? 面试官&#xff1a;Redis的内存用完了会发生什么&#xff1f; 面试官&#xff1a;Redis的数据淘汰策略有哪些 ? …

掌握文件夹重命名技巧:字母大小写批量转换的实用操作

在这个数字化时代&#xff0c;经常要与各种文件和文件夹打交道。有时候&#xff0c;为了提高工作效率或整理文件&#xff0c;要对文件夹名称进行修改。其中&#xff0c;字母大小写的转换是一个常见的需求。例如&#xff0c;将所有文件夹名称中的大写字母转换为小写字母&#xf…

【Linux系统编程】冯 • 诺依曼体系结构(什么是冯 • 诺依曼体系结构?冯 • 诺依曼体系结构如何应用?)

目录 一、前言 二、什么是冯 • 诺依曼体系结构&#xff1f; &#x1f4a6; 冯 • 诺依曼体系结构的发展推导 &#x1f4a6;冯 • 诺依曼体系结构的5大部件 ⭐输入和输出设备 ⭐存储器 ⭐中央处理器&#xff08;CPU&#xff09; &#x1f4a6;冯 • 诺依曼体系结构的细节…

《数据结构、算法与应用C++语言描述》-二叉树与其他树-二叉树的C++实现-设置信号放大器与并查集问题

二叉树和其他树 可编译运行程序见&#xff1a;Github::Jasmine-up/Data-Structures-Algorithms-and-Applications/_23BinaryTree 定义 树 定义 11-1 一棵树 t是一个非空的有限元素的集合&#xff0c;其中一个元素为根&#xff08;root&#xff09;&#xff0c;其余的元素&a…

Python 测试框架 Pytest 的入门

简介 pytest 是一个功能强大而易于使用的 Python 测试框架。它提供了简单的语法和灵活的功能&#xff0c;用于编写和组织测试代码。 1、简单易用&#xff1a;pytest 的语法简洁明了&#xff0c;使得编写测试用例更加直观和易于理解。它使用 assert 语句来验证预期结果&#x…

Java进阶(第二期):package 包 抽象类和抽象方法 接口的实现 多态的实现 综合继承、接口、多态的使用。

2023年11月26日20:11:11 文章目录 Java进阶&#xff08;第二期&#xff09;一、package包的概念二、抽象类和抽象方法(abstract)2.1 使用2.1 抽象类注意事项 三、接口3.1 接口的定义格式3.2 接口成员特点3.3 类和接口的关系3.4 接口和抽象类的对比 四、多态4.1 多态的前提条件4…

4G模块(EC600N)通过MQTT连接华为云

目录 一、前言 二、EC600N模块使用 1&#xff0e;透传模式 2&#xff0e;非透传模式 3、华为云的MQTT使用教程&#xff1a; 三、具体连接步骤 1、初始化检测 2、打开MQTT客户端网络 3、创建产品 4、创建模型 5、注册设备 6、连接客户端到MQTT服务器 7、发布主题消…

2023-11-26 事业-代号s-跨境物流-记录

摘要: 2023-11-26 事业-代号s-跨境物流-记录 跨境物流: 【结论】 中小卖家&#xff08;最低适合1个人经营的卖家&#xff09;首选以下两种物流&#xff0c;目前已知的是以下两种&#xff0c;后续有新的发现再更新。 1、云途物流&#xff08;YunExpress&#xff09;&#xff…

2016年五一杯数学建模A题购房中的数学问题解题全过程文档及程序(采光与房款)

2016年五一杯数学建模 A题 购房中的数学问题 原题再现 随着现代社会经济的快速发展&#xff0c;房地产成为国家经济发展中重要的经济增长点之一。为了充分利用楼房建设的土地面积&#xff0c;开发商经常会选择建筑高层住宅。在购买住房时&#xff0c;影响消费者选择购房的因素…

企业文档文件管理软件推荐:提升管理效率与数据安全性

Zoho WorkDrive企业网盘是一种高效的文件管理工具&#xff0c;它不仅可以为组织搭建统一、高效、安全、智能的内容管理体系&#xff0c;还能够提供大规模支撑、海量数据处理、非结构化数据治理、智能挖掘与洞察等服务能力。通过这些服务&#xff0c;企业可以更好地管理和利用其…

Linux 面试题(一)

目录 1、绝对路径用什么符号表示&#xff1f;当前目录、上层目录用什么表示&#xff1f;主目录用什么表示? 切换目录用什么命令&#xff1f; 2、怎么查看当前进程&#xff1f;怎么执行退出&#xff1f;怎么查看当前路径&#xff1f; 3、怎么清屏&#xff1f;怎么退出当前命…

更改MacBook壁纸,有时可以带来不一样的感觉,特别是动态壁纸

在我看来&#xff0c;买一台新的MacBook最棒的部分就是挑选一张完美的桌面壁纸&#xff0c;为我的新工作伙伴定下基调。有时&#xff0c;在真正更换壁纸之前&#xff0c;我会花一整天的时间&#xff0c;仔细决定我的新笔记本电脑到底是什么样子&#xff0c;而且由于Macbook如此…

使用项目管理工具进行新媒体运营管理的策略与方法

使用Zoho Projects项目管理工具&#xff0c;新媒体运营可轻松驾驭从策划选题、撰写到排期发布的全流程。运用项目管理工具对新媒体运营进行精细化管理&#xff0c;助力团队更高效地规划、执行和追踪各项任务与活动。 以下是运用项目管理工具管理新媒体运营的妙招&#xff1a; 1…

软件测试面试题之如何进行项目介绍

邯郸网上银行系统旨在为企业搭建安全便捷的账户管理&#xff0c;资金汇化及投资服务通道&#xff0c;提升企业财富与价值增值它主要包含首页、我的账户、信用卡、邮储业务、投资理财、转账汇款、个人贷款等模块。 个人贷款一般有抵押贷款&#xff0c;和信用贷等&#xff0c;房…

【算法萌新闯力扣】:回文链表

力扣题目&#xff1a;回文链表 开篇 今天是备战蓝桥杯的第23天。我加入的编程导航算法通关村也在今天开营啦&#xff01;那从现在起&#xff0c;我的算法题更新会按照算法村的给的路线更新&#xff0c;更加系统。大家也可以关注我新开的专栏“算法通关村”。里面会有更全面的知…

IDEA2023版本创建Sping项目只能勾选17和21,却无法使用Java8?(已解决)

文章目录 前言分析解决方案一&#xff1a;替换创建项目的源方案二&#xff1a;升级JDK版本 参考文献 前言 起因 想创建一个springboot的项目&#xff0c;本地安装的是1.8&#xff0c;但是在使用Spring Initializr创建项目时&#xff0c;发现版本只有17和21。 在JDK为1.8的情况下…

岁月随笔-穿拖鞋的汉子

时间如白驹过隙般&#xff0c;转眼间2023年也只剩下最后的40天。汉子我拿出年初自己定的目标&#xff0c;立下的Flag&#xff0c;恍恍惚若昨天发生&#xff0c;不禁让人感慨万千。 其实最近自己遇到了很大的困惑&#xff0c;也导致了断更了一个月。自己逐渐摸不清自己的定位啦…

由走“贸工技”的联想联想到传统OEM,带给了自己那些思考?

2022年1月16日&#xff0c;自己来到魔都的第1597天&#xff0c;这城市还是保持着相似的容颜&#xff0c;而自己却悄悄的起了变化。 以前对时间概念其实不是特别敏感&#xff0c;感觉自己有大把的时光可以浪费&#xff08;虽然知道死亡是个永远无法逃避的话题&#xff09;&#…

Flink-简介与基础

Flink-简介与基础 一、Flink起源二、Flink数据处理模式1.批处理2.流处理3.Flink流批一体处理 三、Flink架构1.Flink集群2.Flink Program3.JobManager4.TaskManager 四、Flink应用程序五、Flink高级特性1.时间流&#xff08;Time&#xff09;和窗口&#xff08;Window&#xff0…