用Unity来下一场雪吧——Particle System 下雪粒子特效

这篇具有很好参考价值的文章主要介绍了用Unity来下一场雪吧——Particle System 下雪粒子特效。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一 制作下雪粒子特效

1 添加Particle System

(1)Hierarchy窗口右键 > Effects > Particle System 

(2)新建一块Plane作为地面,并且把Particle Syetem位置移到Plane上方。

(3)旋转Directional Light,使背景变暗(随意即可),便于观察。


2 设置Shape模块

Shape模块定义粒子发射器的形状,可提供沿着该形状表面法线或随机方向的初始力,并控制粒子的发射位置及方向。设置参数,扩大发射盒体积,粒子将会从发射器内随机发射:

Shape:Box,定义发射器形状。

Scale:(100,100,11),根据需要调节发射器缩放大小。


3 设置Particle System Main模块

Particle System Main模块包含影响整个系统的全局属性,大多数这些属性用于控制新创建的粒子的初始状态。


(1)Start Lifetime(生命周期):10,可以理解为粒子的起始“生命值”为10,每秒减1。

(2)Start Speed(初始速度):0,将在其他模块控制它的速度。

(3)Start Size(初始大小):Random Between Two Constants(在两常数间随机) > 0.1 ~ 0.4。

数字属性的变化方式(其他数字属性也基本适用):点击属性值右侧小三角,弹出的下拉选择栏如图所示:

用Unity来下一场雪吧——Particle System 下雪粒子特效

Constant:属性值为固定值。

Curve:随着时间,属性值根据曲线变化。

Random Between Two Constants:随着时间,属性值在两常量间随机变化。

Random Between Two Curves:随着时间,属性值在两曲线间随机变化。

(4)Simulation Space:World,使粒子的运动坐标在世界空间中(不随父对象移动)。

GIF
左 Local                                                                            右 World


4 设置Emission模块

Emission模块中的属性影响粒子系统发射的速率。由于在第2步中增加了发射器的体积,粒子看起来比较稀疏,为了有飘雪的感觉,需要加快发射速率,提高粒子密度。

Rate over Time:100,每秒发射100个粒子。


5 设置Velocity Over Lifetime模块

Velocity Over Lifetime模块控制每个粒子在生命周期内的速度。雪花飘落时会在XZ平面(水平)上随机小幅度移动,而在Y轴的负方向(向下)也会忽快忽慢地下落。设置参数:

Linear: Random Between Two Constants > x:(-1,1),y(-1,-2),z(-1,1)。

Space: World。


效果如下:

用Unity来下一场雪吧——Particle System 下雪粒子特效

 

6 设置Renderer模块

该模块决定粒子如何被渲染。这是一个常用的模块,本次保持默认即可。

(1) Render Mode:允许在2D Billboard 图形模式和3D Mesh模式之间选择。

Billboard模式适合于标识从任何方向看起来体积大致相投的粒子(例如云)。

(2) Material:用于渲染粒子的材质。创建粒子系统是会使用默认材质,假如有雪花的材质,效果会更上一层楼。


此时,一个普通的下雪粒子特效已经制作完成了,但别着急,还有很大美化的空间,美术的感染力往往在于一些细节。

二 优化飘落表现

7 设置Noise模块

制作粒子特效的思路像是做“加法”,不断的添加一些合适的点缀、整体和局部的运动,会让粒子更加逼真。当然也不能加入很多无关的效果,反而会让粒子变得很乱。

对下雪来说,真实的空气中一定有微风,就算没有风也有气流的扰动,所以加入一些噪声扰动,会让统一下落的雪花更真实一些。

使用噪声影响粒子的运动,遵循水平面小幅度随机,下落忽快忽慢的思路,使其更加自然:

(1)Separate Axes(分离轴):勾选后,可以调整每个轴向的影响:

Random Between Two Constants > X(-0.8,0.8),Y(-0.5,0),Z(-0.8,0.8)。

(2)Frenquency(频率):0.5,数值越低变化越平缓。

(3)Scroll Speed(滚动速度):0.5,随着时间滚动噪声图,使粒子移动效果更加动态。

GIF

8 设置Collsion模块

除了噪声扰动以外,Unity的粒子系统还支持一种非常强大的功能:让粒子可以像刚体一样发生碰撞。Collsion模块控制粒子如何与场景中的游戏对象碰撞,支持世界碰撞和平面碰撞。

雪花留在地面上的效果非常棒,其实粒子碰撞的性能开销比较大,如果用在实际游戏中,可以看看开启碰撞是否会对帧率有影响。

当需要雪花飘落在地上时,可以勾选此模块。如下设置后,粒子便能停留在地面上:

Type:World。

Bounce(弹力):雪喷到地面后不需要反弹,设为0。

Dampen:粒子碰撞后损失速度的比例,设为1。


9 设置Color over Lifetime

雪花飘落在地面上,随着时间慢慢淡化,当生命周期结束时最终消失褪去。

Color over Lifetime模块控制粒子的颜色和透明度在生命周期中的变化。当雪花快消失的时候,调节透明度,使粒子有淡出的消失效果。点击Color属性右侧图标进入Gradient Editor:

渐变条上下两侧左键可以新增标识点。

渐变条上方用于调节透明度(蓝线附近),在靠近右侧的地方新增一个标识点。

把渐变条右上角标识点的透明度调为0。

渐变条下方用于调节颜色(红线附近)。

操作如图所示:

用Unity来下一场雪吧——Particle System 下雪粒子特效


经过一轮优化之后,雪花不仅飘落的细节更加丰富,而且能够接触场景物体,消失也能自然淡出。 

三 添加刮风效果

优化完飘落细节后,下雪特效已经有不错的表现,根据具体的使用场景,还有进一步美化的空间。比如有时候游戏需要一个下雪的同时并且刮风的场景,此时可以结合External Forces模块以及Particle System Force Field组件,让雪花飘落的同时接收特定力场的作用。

10 设置External Forces模块

External Forces模块控制影响粒子的风区。

(1) 勾选External Forces模块后,在Hierarcy窗口中添加Particle System Force Field:


(2)设置Particle System Force Field参数:

Shape:Box。

EndRange:20,增加外边界,扩大影响范围。粒子会在力场范围内受到影响。

Direction(方向) >  x > Random Between Two Constants : 0 ~ 1.5。

Gravity(引力) > Strength:0,不需要引力。

效果如图:

用Unity来下一场雪吧——Particle System 下雪粒子特效

 

结语:本文先制作了普通的雪粒子特效,再优化飘落过程的细节,最后为粒子添加力场达到了刮风的效果,通过三个部分简单介绍了粒子系统常用的模块,希望对大家有所启发。文章来源地址https://www.toymoban.com/news/detail-415491.html

到了这里,关于用Unity来下一场雪吧——Particle System 下雪粒子特效的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Unity】UGUI中Camera Depth,Canvas Sorting Layer、Order in Layer与Particle System渲染层级分析

    目录   前言 一、项目需求 二、Camera 1.Clear Flags 2.Culling Mask  三、Canvas 1.Sorting Layer 2.Order in Layer 四、Particle System 1.Sorting LayerID 与Order in Layer 总结         最近在做项目的过程中,发现项目中的部分3d模型会被粒子特效所遮挡,这并不是笔者想要的效果,于是经过一番面向

    2024年02月05日
    浏览(37)
  • UGUI 使用 UIParticle 实现 UI 上显示 Particle System 以及 层级遮挡 和 Mask

    UIParticle git 地址 打开上面地址,关于UIParticle 如何使用讲解非常详细 如何安装到Unity 项目?找到 Installation 部分,几种安装方式 下面是 Using Git 方式 关闭Unity,打开 Unity 项目目录找到 Packages/manifest.json 添加如下代码 然后用Unity 打开项目,将自动开始导入并安装,如果弹窗提

    2024年02月07日
    浏览(27)
  • 【Unity_Input System】Input System新输入系统(一)

    目录 一、导入Input System包 二、使用方式1:直接从输入设备对应类中获取输入 三、使用方式2:用代码创建InputAction获取输入 四、使用方式3:用Player Input组件获取输入 五、使用方式4:用Input Action Asset生成C#代码获取输入 打开包管理器,搜索Input System,点击右下角安装。 安装

    2024年02月08日
    浏览(31)
  • 【Unity_Input System】Input System新输入系统(二)

    目录 六、Action Phase 七、Input Action Asset文件 1.Bindings Mode  1Binding 2PositiveNegative Binding 3UpDownLeftRight Composite 4UpDownLeftRightForwardBackward Composite 5Binding with one modifier 6Binding with two modifier 2.Binding Path 3.Action Type 4.Initial State Check 5.Interaction 1Default Interaction 2Press Interaction 3Hold Inter

    2024年02月03日
    浏览(39)
  • Unity学习笔记:Job system

    Unity的job system可以让我们编写简单且安全的多线程代码,从而让我们的游戏可以使用所有可用的CPU内核来执行代码。这样可以提升我们的游戏的性能。 Unity的job system可以帮助我们写出多线程代码,从而我们的游戏可以使用所有可用的CPU内核来执行代码。job system为我们提供了

    2024年02月20日
    浏览(26)
  • Unity 新版输入系统(Input System)

    官方教程 注意 新的输入法系统需要 Unity 2019.4+ 和 .NET 4 运行时。它不适用于 .NET 3.5 的项目。 教程版本:Unity 2021.3.26 导航栏 - Window - Package Manager 选择 Unity Registry 在列表中找到 Input System 点击 Install 安装 点击 Yes 启用新版 Input System 等待Unity重新启动 Unity 默认会同时启用旧版和

    2024年04月23日
    浏览(34)
  • Unity 3D Input System的使用

    Input System是Unity新推出的输入系统,可以用作以前Input Manager的更具扩展性和可自定义性的替代方案。这里我将使用Unity 3D的Input System来实现一个FPS第一人称的游戏场景。 演示效果如下: 新建一个Unity 3D项目,在Asset Store里面下载StarterAssets - FirstPerson,然后在Package Manager里面导

    2024年02月20日
    浏览(27)
  • unity多线程Burst+Job System

    Unity自己本身UnityEngine所使用的API是不能被多线程调用的,它没有向用户开放线程接口,所以Unity是不能使用多线程的,但是C#中可以使用多线程,Unity使用C#进行脚本编辑,故而Unity也可以通过C#来调用多线程。 JobSystem 是Unity Dots(多线程运行框架)的核心组件之一,也可以把它拿

    2024年02月04日
    浏览(28)
  • 【Unity_Input System】Input System新输入系统(三)——在游戏中更换按键绑定

    Binding只由一个部分组成,一般绑定单个按键或者摇杆 CompositeBinding由两个以上部分组成,一般是用于将多个按键组成虚拟轴 更换按键绑定时,Binding和Composite Binding需要分别处理,对Composite Binding需要循环各个部分进行修改。 可以用InputBinding.isComposite来判断是否是Composite Bind

    2024年02月04日
    浏览(39)
  • 【Unity】使用 System.Windows.Forms 的问题

            因为最近开发需要用到使用 Windows 自带的窗口打开、文件选择等功能,然后兜兜转转需要使用  System.Windows.Forms 这个库。这个库在 WinForm 里是很常见的,但是要在 Unity 里使用,并打包出来还是有些坑的。         我这里使用的 Unity 版本:2022.2.1f1c1         PS:这个

    2023年04月08日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包