Unity百游修炼(18)——粒子系统的魔力详细全流程

【实现100个unity特效之4】Unity ShaderGraph使用教程与各种特效案例(2023/12/1更新) ShaderGraph是Unity中的一个可视化工具,用于创建和编辑图形着色器。其意义在于简化编写复杂着色器的过程,减少对具体编程语言的依赖,使艺术家和设计师可以更方便地创建各种美术效果。使用ShaderGraph可以通过图形界面设置着色器属性,包括颜色、纹理、光照等,并在视窗预览中即时显示结果,从而快速迭代和调整着色器。使用ShaderGraph需要先安装Unity 2018.1或以上版本,并添加ShaderGraph插件。打开ShaderGraph面板后,可以通过拖放节点并连接它们来创建着色器。 阅读详情
AI摘要

本文介绍在Unity游戏开发中,利用其引擎实现粒子烟花、鼠标画画和脚本拖尾三种特效。无需额外素材,依靠自带组件即可。详细说明了实现路径和操作步骤,包括粒子颜色、发射状态设置,鼠标绘图条件及脚本拖尾参数设置等,为开发者提供实用技巧。

一.前言

        在 Unity 游戏开发中,特效的添加能够极大地提升游戏的视觉吸引力和用户体验。本文将详细介绍如何利用 Unity 引擎实现三种有趣的特效:粒子烟花、鼠标画画以及脚本拖尾。通过这些实例,你将深入了解 Unity 粒子系统、脚本编程以及相关组件的运用,无论是新手开发者还是有一定经验的从业者,都能从中获取实用的知识和技巧。


二. 最终效果

1.粒子烟花

        利用粒子系统,打造出绚丽多彩的粒子烟花效果。粒子从指定位置发射,呈现出丰富的颜色变化、大小缩放以及轨迹模拟,仿佛夜空中绽放的真实烟花,为场景增添了浓厚的节日氛围。

unity6.1

 

2.鼠标画画

        实现了通过鼠标在游戏场景中自由绘画的功能。创建一个立方体作为绘图背景板,借助摄像机的投影模式,当玩家按住鼠标左键时,能够在背景板上绘制出具有设定颜色和宽度的线条,松开鼠标右键则可以删除绘制的线条,为玩家提供了一个创意绘画的空间。

unity6.3

 

3.脚本拖尾

        运用脚本实现了物体拖尾效果。通过设置旋转原点、拖尾的颜色和宽度以及拖尾时间,让物体在绕原点旋转的过程中,身后留下一条具有动态效果的拖尾,为游戏物体增添了独特的运动视觉效果。

unity6.4


 三.素材

        不需要素材,仅依靠 Unity 自带的粒子系统、Line 组件和 Trail 组件等即可完成。


四.实现路径

1.粒子烟花

(1)生成一个带颜色的粒子

        在 Unity 的粒子系统中,通过设置粒子的初始颜色属性,使粒子在发射时便具有丰富的色彩。

(2)为粒子设置发射状态

        在粒子系统的 Emission 模块中,调整发射速率、发射角度等参数,控制粒子的发射频率和方向,从而模拟烟花从一个点向四周喷射的效果。

(3)模拟烟花效果

        借助 Shape 模块设定粒子的发射形状,如球形或锥形;利用 Size over Lifetime 模块调整粒子在生命周期内的大小变化,使其呈现出烟花绽放和消散的过程;在 Renderer 模块中设置粒子的渲染属性,包括颜色渐变等,增强烟花效果的真实感。

2.鼠标画画

(1)创建一个立方体,作为绘图背景板

        在 Unity 场景中创建一个 Cube 对象,并调整其位置、大小和旋转等参数,使其适合作为绘画的背景区域。

(2)设置摄像机的投影模式

        将摄像机的投影模式设置为合适的类型,如透视投影或正交投影,确保鼠标位置与场景中的绘画位置能够正确映射,为绘制线条提供准确的坐标依据。

(3)通过代码设置当前端点个数

        在脚本中定义变量来记录线条的端点个数,当鼠标点击并触发绘制操作时,增加端点个数,以便在后续步骤中添加更多的顶点来绘制线条。

(4)通过代码设置起点和重点的颜色和宽度

        使用 LineRenderer 组件的属性,在脚本的 Start 函数中设置线条起始和结束的颜色以及宽度,确定绘制线条的外观样式。

(5)通过代码设置按住鼠标左键开始画线的条件

        在 Update 函数中,利用 Input.GetMouseButton 函数检测鼠标左键是否被按下,当按下时,通过射线检测确定鼠标在场景中的点击位置,并在该位置添加线条的顶点,实现实时绘制。

(6)通过代码设置松开鼠标左键删除画线

        同样在 Update 函数中,使用 Input.GetMouseButtonUp 函数检测鼠标右键是否被抬起,当抬起时,清空线条的顶点数量,从而实现删除绘制线条的功能。

3.脚本拖尾

(1)通过代码设置旋转原点

        在脚本中定义一个变量来存储旋转原点的位置,根据需求通过计算确定该位置,例如相对于物体当前位置的某个偏移量。

(2)通过代码设置起点和终点的颜色和宽度

        利用 TrailRenderer 组件的属性,在脚本的 Start 函数中设置拖尾起始和结束的颜色以及宽度,决定拖尾的外观效果。

(3)通过代码设置拖尾时间

        在脚本中设置 TrailRenderer 组件的 time 属性,控制拖尾在场景中保留的时间长度,实现不同时长的拖尾效果。

(4)通过代码设置拖尾绕原点旋转

        在 Update 函数中,使用 transform.RotateAround 函数,让物体围绕设定的旋转原点,按照一定的速度和轴进行旋转,同时拖尾跟随物体运动并呈现出动态效果。


五.详细操作步骤

1.粒子烟花

(1)鼠标右键——effects——Particle Systeman。按照下面调节参数:

        在 Hierarchy 面板中,鼠标右键点击选择 “effects” -> “Particle System”。此时,场景中会生成一个粒子系统对象,默认名称为 “Particle System”。选中该粒子系统,在 Inspector 面板中可以看到一系列用于调整粒子系统属性的模块。

(2)在Emission模块,调节下面参数:

        展开 Emission 模块,将 Rate over Time(每秒发射粒子数)设置为一个合适的值,比如 50,这决定了烟花发射粒子的速度。如果想要烟花发射更密集,可以适当增大该值;将 Bursts(突发发射)部分进行设置,例如添加一个在 0 秒时发射 100 个粒子的突发,模拟烟花瞬间爆发的效果。

(3)在Shape模块,调节下面参数:

        进入 Shape 模块,选择 Shape 为 Sphere(球形),Radius(半径)设置为 1,这意味着粒子将从一个球形区域内发射,模拟烟花从一个点向四周扩散的效果。调整 Angle(角度)参数,比如设置为 45 度,控制粒子发射的角度范围。

(4)在size over Lifetime模块下,调整为下面参数:

        在 Size over Lifetime 模块中,曲线的起始点表示粒子刚发射时的大小,将其设置为 0.5,随着粒子生命周期的推进,在曲线的终点位置将大小设置为 0,模拟烟花粒子从绽放逐渐消散的过程。可以通过添加关键点,调整曲线形状,实现更复杂的大小变化效果。

(5)在Renderer模块下,调整如下参数:

        在 Renderer 模块中,将 Material(材质)设置为一个合适的粒子材质,例如具有发光效果的材质,使烟花粒子看起来更绚丽。调整 Color over Lifetime(生命周期内颜色变化)曲线,让粒子在发射初期呈现明亮的黄色,随着时间推移逐渐变为红色,最后消失,模拟真实烟花的颜色变化。

2.鼠标画画

(1)创建一个cube立方体,修改为如下的参数:

        在 Hierarchy 面板中,鼠标右键点击选择 “3D Object” -> “Cube”,创建一个立方体。

(2)设置摄像机参数如下:

        选中 Main Camera,在 Inspector 面板中,将 Projection(投影)设置为 Orthographic(正交投影),这样可以确保绘制的线条在屏幕上显示时不会因为透视效果而产生变形。

(3)鼠标右键——effects——Line

(4)创建一个脚本LineControl,并挂载到Line上
代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LineControl : MonoBehaviour
{
    private LineRenderer lineRenderer;
    private int count = 0;

    // Start is called before the first frame update
    void Start()
    {
        // 获取LineRenderer组件
        lineRenderer = GetComponent<LineRenderer>();
        // 设置线条起始颜色为红色
        lineRenderer.startColor = Color.red;
        // 设置线条结束颜色为蓝色
        lineRenderer.endColor = Color.blue;
        // 设置线条起始宽度为0.5f
        lineRenderer.startWidth = 0.5f;
        // 设置线条结束宽度为0.5f
        lineRenderer.endWidth = 0.5f;
    }

    // Update is called once per frame
    void Update()
    {
        // 检测鼠标左键是否被按下
        if (Input.GetMouseButton(0))
        {
            // 从相机发出一条射线指向鼠标点击位置
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            // 检测射线是否击中物体
            if (Physics.Raycast(ray, out hit))
            {
                // 增加线条的顶点数量
                lineRenderer.positionCount = ++count;
                // 直接使用射线命中点作为新顶点的位置,避免偏移
                lineRenderer.SetPosition(count - 1, hit.point);
            }
        }

        // 检测鼠标右键是否被抬起
        if (Input.GetMouseButtonUp(1))
        {
            // 清空线条的顶点数量,实现擦除功能
            lineRenderer.positionCount = 0;
            // 重置顶点计数
            count = 0;
        }
    }
}

3.脚本拖尾

(1)鼠标右键——effects——Trail

        在 Hierarchy 面板中,鼠标右键点击选择 “effects” -> “Trail”,创建一个 Trail 对象。该对象将用于生成拖尾效果。

(2)创建一个脚本TrailTest,并挂载到Trail上

代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class trailTest : MonoBehaviour
{
    private TrailRenderer trailRenderer;
    private Vector3 center;
    // Start is called before the first frame update
    void Start()
    {
        center = transform.position - Vector3.left * 10;

        trailRenderer = GetComponent<TrailRenderer>();
        trailRenderer.startColor = Color.red;
        trailRenderer.endColor = Color.green;
        trailRenderer.startWidth = 1f;
        trailRenderer.endWidth=0.1f;

        trailRenderer.time = 0.5f;
    }

    // Update is called once per frame
    void Update()
    {
        transform.RotateAround(center, Vector3.forward, Time.deltaTime * 360);
    }
}


六.结语

        这些特效不仅展示了 Unity 强大的功能,也为游戏开发提供了丰富的创意灵感。在实际应用中,开发者可以根据项目需求对这些特效进行进一步的优化和扩展,如添加更多的交互功能、优化性能等。希望本文能帮助你在 Unity 开发的道路上迈出坚实的一步,创造出更加精彩的游戏作品。

【unity游戏开发入门到精通——2D篇】最全的Unity各种2d光源灯光的使用和案例说明 阅读详情

相关推荐

【推荐100个unity插件之11】Shader实现UGUI的特效——UIEffect为 Unity UI 提供视觉效果组件

一般的shader无法直接使用在UI上,需要在shader中定义特定的面板参数,今天就来推荐github上大佬做的一套开源的一系列UGUI,Shader实现的特效——UIEffect 为 Unity UI 提供视觉效果组件。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 7367

【实现100个unity特效之7】unity 3d实现各种粒子效果

上面设置的值表示,当粒子效果数量达到100以后,它就会为了保护计算机,当前面一波的粒子效果消失之后,才会去进行下一波的粒子效果的显示,这是一种保护性能、设置上限的方法,也是一种保护性能‘设置上限的方法。那就说明了:你当前粒子效果能够显示的最大颗粒数,场景中允许的颗粒数,已经饱和了,就不会继续去生成新的粒子效果了,也就是在主模块当中的。触发的条件,我们选择的是当当前粒子、也就是我们的雨滴碰撞到任何的模型物体时呢,就会发出涟漪的效果。(量力而行,力虽微,心暖人,你的支持是我创作的最大动力)

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2万+

Unity3d屏幕特效-摄像机特效插件-Camera Filter Pack 4.0.0

Unity3d屏幕特效-摄像机特效插件-Camera Filter Pack 4.0.0

Unity 之游戏特效

游戏特效简介(Unity)+资源网站链接

YF云飞的博客 7685

Zabbix-获取客户端的SNMP数据

网口状态(ifOperStatus)的 OID 是1.3.6.1.2.1.2.2.1.8,查询时需要用1.3.6.1.2.1.2.2.1.8.1(第 1 个网口)、1.3.6.1.2.1.2.2.1.8.2(第 2 个网口)等。表格对象是指 “包含多个同类实例的对象”(如设备的多个网口、多个进程等,每个实例需要单独标识)。在 SNMP 规范中,标量对象的完整 OID 必须以.0结尾,.0是标量对象的唯一实例编号。标量对象是指 “单一值的对象”(如设备的名称、温度、状态等,整个设备只需要一个值来表示)。

徐子元 1726

【开关】刀开关矩阵(Pole Switched Matrix)的结构讨论

矩阵主要有交叉点矩阵和树形矩阵两种矩阵结构。 交叉点矩阵是由SPST继电器排列成简单的网格形式的阵列组成;树形矩阵是由树形的多路复用模块组成,为需要高频RF带宽的应用提供解决方案。在搭建这些矩阵的同时,也限制了可提供的连接性。这也是为什么有的矩阵是简单的交叉点矩阵,而有的矩阵的交叉点中嵌入隔离继电器用来提供中间带宽的矩阵。 但是,Pickering Interfaces提供的另外一种矩阵类型其...

Tina的博客 4405

unity 制作 粒子 烟花

想在游戏成功时加烟花特效,于是试着用粒子系统做了一个,效果还不错,分享给大家。 效果展示: 主要是由四个粒子特效组成的。 首先创建一个主粒子 然后设置其方向水平朝上。然后设置其各项参数。具体各项参数我就不具体说明了,根据你场景的大小和烟花高度调整start lifetime speed size等参数,emission的发射速率我设置地比较小,这样的效果是一次释放一枚烟花。 shape这里根据自己需求调整发射口的大小。 然后设置一下拖尾的效果,形状设成逐渐减少,颜色也是逐渐透明的状态。 然后在渲染模块

weixin_44373409的博客 7307

三维跨孔电磁波CT数据可视化框架搭建

利用matlab实现对跨孔电磁波CT实测数据反演,并搭建了三维CT数据可视化框架,可装填实测CT反演数据。

Neverlevsun的博客 1167

Unity——各种特效的基本使用方法

特效是游戏制作不可或缺的一环,作为游戏开发者最重要的工作就是将特效添加到游戏中,并在合适的时机、合适的位置将特效播放出来,同时还要注意特效的管理和销毁。某些种类的特效,如动效、贴花,还要编写脚本代码以实现更细节的控制。因此本文将简单介绍各种特效的使用方法。特效和动画的播放本身没有什么难点,很多时候只需要实例化物体即可。

m0_63024355的博客 7592

免费 AIS船舶轨迹预测 数据集 分享 (可用于长周期轨迹预测)

论文中使用的数据由提供。有关预处理步骤的详细信息,请参阅。

qq_43747519的博客 1万+

手把手教你用GPIO模拟MDIO时序,搞定Linux下那些‘不听话’的PHY芯片

本文详细介绍了如何利用Linux内核的`virtual,mdio-gpio`驱动,通过GPIO模拟MDIO时序来解决特殊PHY芯片的驱动调试问题。从硬件准备、设备树配置到驱动实现,提供了完整的解决方案和实战案例,帮助开发者应对非标准时序的PHY芯片挑战。

weixin_29188043的博客 269

Unity-----特效系统

脚本中常用的属性:TrailRenderer.emitting属性,是一个布尔值,true代表开始根据位置变化产生拖尾,false代表暂停产生拖尾。触发函数比较特殊,每帧都会执行的,大多是用在于需要对发生触发的粒子进行一些处理的时候用的。粒子系统:作用:在Unity中,粒子系统可以用来模拟刀光,火焰,爆炸,水滴,风雨等各种环境特效,粒子系统:可以用来模拟刀光,火焰,爆炸,水滴,风雨等各种环境特效。粒子力场:在一个区域范围内模拟一个力场钢的效果,改变粒子的表现。销毁:跟其他物体一样使用Destory();

weixin_41392061的博客 1705

ccSwitch 安装使用指南,claude code的最佳搭档

ccSwitch 是一款真正为 AI 编程开发者打造的效率工具。它把原本繁琐的配置管理工作,简化成了直观的图形界面操作。无论你是需要在多个 API 提供商之间切换,还是想要统一管理多款 AI 编程工具,ccSwitch 都能帮你大幅提升效率。如果你是重度 AI 编程工具用户,强烈推荐尝试一下 ccSwitch,相信它会成为你开发工具箱中不可或缺的一员。项目地址。

篮球界最会写bug的人;程序猿中打球最菜的人。 1285

unity学习笔记-特效篇

unity学习笔记 由于动画师的动画制作遇到了一些小问题,只能先做其他功能的摸索了~ 本来想记录一下服务器搭建的,但是在消息传输的部分遇到了一些bug,可能是消息解析的时候出现了一些问题,教程里中间没有调试,所以不知道具体的问题是不是这个,只能先搁置那部分的内容,那个目前也不急,因为公司也没有资源买服务器(希望老板不看csdn)服务器的搭建和java项目里的ssm等框架差不太多,主要是多了一个消息协议,提高了消息传输的安全性 特效教程下方 https://www.bilibili.com/video/BV

pure81的博客 4865

C/C++跳动的爱心(完整代码)

C语言实现跳动的爱心的完整代码。

AIGC 5842

解决开着代理情况下pip或魔搭下载失败

最近由于经常配环境导致,老是要来回切clash关掉代理,非常的不方便如下面的,魔搭模型下载失败如下面的,pip换源后下载失败。

风吹落叶的博客 2949

Unity烟花特效实现(附源码)

Unity烟花特效实现(附源码)

iiiiiiimp的博客 4277

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Unity组件大全之 Effects特效 |(45)Visual Effect Graph:实现炫目视觉效果的强大工具

Unity 的 **Visual Effect Graph (VFX Graph)** 是一个基于 GPU 的粒子特效系统,允许开发者创建复杂且高效的视觉效果。与传统的粒子系统不同,VFX Graph 使用基于节点的工作流程,极大地提升了设计灵活性和可视化能力。它特别适合处理复杂效果,如火焰、烟雾、爆炸、体积光、流体模拟等。在本文中,我们将介绍 VFX Graph 的基本概念,并通过一些代码示例展示如何使用它来创建各种炫目的特效。

Unity打怪升级 7013

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【Unity3D】Bloom特效

Bloom 特效是指:将画面中较亮的区域向外扩散,造成一种朦脓的效果。实现 Bloom 特效,一般要经过 3 个阶段处理:亮区域检测、高斯模糊、Bloom 合成。根据亮度阈值检测亮区,如下从原图中提取亮区域。将高斯模糊处理后的亮区域图像与原图像叠加。对亮区域进行高斯模糊(原理见→。),使得亮区域往外扩散,并产生朦脓效果。

little_fat_sheep 3267

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Unity shader 抖音效果(屏幕特效)

Shader "Douyin/gt" { Properties { _MainTex ("Texture", 2D) = "white" {} scale ("scale", float) = 1 } SubShader { // No culling or depth Cull...

游戏博客 3489

U3D特效笔记——龙卷风特效

第12节 时长:129:23 特效预览: 重点:体积感和动态 先做一层打底 anse 00002 22 22 做一层纹理 00071 高亮 24:08 再叠一层 yanhuo00018 24:59 加一层烟 00103 地面上的烟 00275 复制一层,层次的烟 36:45 做一个闪电 用模型替换anse的render cone模型,增加体积感 适当删除一些层,更好看一些 地...

weixin_49406762的博客 1789

【unity】特效

特效使用

PA_的博客 319

【实现100个unity特效之5】unity2d 各种粒子特效

我只是我抽空写了一些简单的2d粒子特效,后面如果接触新的不错的2d特效,我还会继续补充。unity 3d实现下雨、雾气、萤火虫和火花四溅的粒子效果。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1万+

unity鼠标点击显示粒子特效

记录unity粒子特效显示

weixin_50702814的博客 4229

【Unity基础详解】(8)Unity核心:特效系统

Unity特效系统主要由粒子系统(Particle System)、线段渲染器(Line Renderer)和拖尾渲染器(Trail Renderer)三大组件构成。粒子系统通过模块化设计实现复杂效果,包含主控模块、发射模块、速度/生命周期控制等20多个功能模块,支持火焰、烟雾等动态粒子效果。线段渲染器用于绘制连续线条,可创建激光、轨迹等效果,支持宽度/颜色变化和纹理映射。拖尾渲染器生成运动物体的轨迹,可调整持续时间、宽度和颜色渐变。

伯恩的博客 1718

Unity特效总览

Unity中的粒子组件叫做Particle System。粒子系统顾名思义,与“微粒”有关。粒子系统会生成和发射很多粒子,通过控制粒子的生成数量、大小、角度、速度、贴图和颜色等众多属性,可以实现或真实或炫酷的各种效果。其中,粒子的每一种属性还可以根据时间变化而随机变化,充分释放特效设计师的创造力。例如,用粒子系统可以实现火焰、雨、雪、气流等自然现象,也可以实现能量球、魔法弹等幻想中的效果。而且现代的粒子系统也支持基于3D模型的粒子,可以实现模型破碎、模型聚合、模型消散等丰富的视觉效果。

m0_63024355的博客 1319
上一篇: Unity百游修炼(17)——飞船大战详细全流程
下一篇: Unity百游修炼(19)——粒子系统之魔法battle(详细全流程)
Unity黑马王子
博客等级 码龄4年 1846粉丝 181原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值