UE基础篇七:特效

导语:

文末有工程地址,通过小游戏来学习特效

入门

下载项目,在文章最下面 

播放开始游戏。按住左键射击并使用WASD移动。

在本教程中,您将创建两个粒子效果。一个用于船舶的推进器,一个用于船舶爆炸时。要创建这些,您将使用粒子系统

什么是粒子系统?

顾名思义,粒子系统是一个创建和管理粒子的系统。粒子基本上是空间中的一个点。使用粒子系统,您可以控制粒子的外观和行为。

粒子系统由一个或多个称为发射器的组件组成。这些负责产生粒子。

发射器也有称为模块的组件。模块控制发射器产生的粒子的特定属性。例如,粒子的材料和初始速度。在下面的示例中,使用了两个模块来为每个粒子提供一个红色圆圈材质和随机速度。

您还可以在粒子的生命周期内更改粒子的颜色。在此示例中,粒子的颜色从红色变为蓝色:

现在您已经了解了粒子系统是什么,是时候为飞船的推进器创建一个了。

创建粒子系统

导航到ParticleSystems文件夹并单击Add New\Particle System。将粒子系统重命名为PS_Thruster,然后打开它。

Cascade:粒子系统编辑器

Cascade 由四个主要面板组成:

  1. 视口:此面板将显示您的粒子系统的预览。您可以通过按住右键单击并移动鼠标来环顾四周。要移动,请按住右键单击并使用WASD键。按F键可以快速定位,操作和在编辑器一样
  2. 详细信息:您选择的任何组件(发射器、模块等)都将在此处显示其属性。如果未选择任何内容,它将显示粒子系统的属性。
  3. 发射器:此面板将显示从左到右的发射器列表。每个发射器显示其模块的列表。
  4. 曲线编辑器:曲线编辑器允许您可视化和调整模块曲线的值。并非所有模块属性都支持曲线。

现在,粒子系统正在使用默认的粒子材质。

首先,您将使用圆形材质替换粒子材质。

将材质应用于粒子

转到发射器面板并选择所需模块。

必需模块包含必要的属性,例如粒子材料和发射器持续时间。每个发射器都必须有一个必需的模块。

要更改材质,请转到 Details 面板并将Material设置为M_Particle。这会将粒子的外观更改为橙色圆圈。

直接使用工程效果是白色,不要紧往下看

接下来,您将粒子系统附加到玩家的飞船上。

附加粒子系统

返回主编辑器并导航到Blueprints文件夹。打开BP_Player,然后转到 Components 面板。

要使用粒子系统,您可以使用粒子系统组件。创建一个并将其重命名为ThrusterParticles。确保将其附加到碰撞组件。

要指定粒子系统,请转到 Details 面板并找到Particles部分。将模板设置为PS_Thruster

接下来,将ThrusterParticles位置设置为(-80, 0, 0)。这将把它放在船的后面。

最后,将Rotation设置为(0, 90, 0)。这将定向粒子系统,使粒子远离飞船。

单击编译,然后返回主编辑器。按Play查看粒子系统的效果。

粒子系统正在工作,但粒子移动有点太慢而且非常小。您可以通过设置粒子的初始速度和大小来解决此问题。

设置粒子的速度和大小

首先,您将设置粒子的初始速度。打开PS_Thruster,然后选择Initial Velocity模块。之后,展开Start Velocity\Distribution

默认情况下,粒子的初始速度范围为(-10, -10, 50)(10, 10, 100)

要以更快的速度将粒子从飞船上移开,您需要做的就是增加Z速度。将Min Z设置为300,将Max Z设置为400

以下是原始速度和新速度之间的比较:

接下来,您将设置粒子的初始大小。

设置粒子的大小

选择Initial Size模块,然后转到 Details 面板。之后,展开Start Size\Distribution

与 Initial Velocity 模块一样,Initial Size 也有最小和最大范围。但是,对于本教程,您会将大小设置为一个常量值。为此,请将 Distribution 设置Distribution Vector Constant

注意:分布允许您在范围内或曲线上指定恒定值。您还可以使用蓝图设置值。要了解更多信息,请前往虚幻引擎文档中的分发页面。

然后,将Constant设置为(70, 70, 70)。这是一个尺寸比较:

返回主编辑器并按Play

粒子看起来更好,但它们之间的距离仍然很远。这是因为粒子生成之间的持续时间过长。要解决此问题,您可以提高生成率。

增加粒子生成率

要提高生成率,您需要使用Spawn模块。该模块控制发射器产生粒子的速度。除了必需之外,每个发射器都必须有一个 Spawn 模块。

打开PS_Thruster然后选择Spawn。转到 Details 面板,然后展开Spawn\Rate部分。

常数设置为50。这会将生成速率提高到每秒 50 个粒子。

返回主编辑器并按Play

如您所见,它现在看起来更像一条小径。为了使粒子看起来更像推进器火焰,您可以随着时间的推移缩小它们。

随着时间的推移缩小粒子

打开PS_Thruster,然后转到 Emitters 面板。

要缩小粒子,您可以使用Size By Life模块。该模块将在其生命周期内将乘数应用于粒子的大小。通过右键单击发射器中的空白空间并选择Size\Size By Life来创建一个。

默认情况下,这对粒子的大小没有视觉影响。这是因为乘数始终设置为 1。要缩小粒子,您需要调整模块的曲线,使大小乘数随时间减小。但首先,什么是曲线?

什么是曲线?

曲线是点的集合。每个点有两个东西:一个位置和一个值。

当你有两个或更多点时,你就形成了一条线。下面是基本线性曲线的示例。点 A的位置和值为0点 B的位置为2,值为1

如果您在任何位置对线性曲线进行采样,它的功能类似于线性插值。例如,如果您在位置1对上面的曲线进行采样,您将收到0.5的值。

如果您创建一条下降的曲线,您收到的价值将逐渐变小。这是您要用于“按寿命计算尺寸”模块的曲线类型。

现在,您将在 Cascade 中创建上面的曲线。

修改模块的曲线

选择Size By Life,然后转到 Details 面板。之后,展开Life Multiplier\Distribution\Constant Curve\Points在这里,您将看到Life Multiplier曲线的点列表。

In Val是曲线上点的位置。对于Size By Life,值0表示粒子生命的开始。值1表示粒子生命周期的结束

要随时间减小尺寸乘数,您需要减小第二个点的Out Val。将点1的值设置为(0, 0, 0)。这将随着时间的推移将粒子的大小减小到 0。

您可以使用曲线编辑器可视化Life Multiplier曲线。为此,请单击Size By Life模块上的图形图标。

这会将生命乘数添加到曲线编辑器中。要将曲线拟合到视图中,请单击曲线编辑器中的拟合

如您所见,在粒子的生命周期内,大小乘数从 1 减小到 0。

返回主编辑器并按播放

粒子现在看起来更像火焰!您将添加到此粒子系统的最后一件事是颜色变化。

添加颜色变化

要使用 Cascade 设置粒子的颜色,您需要正确设置粒子材质。导航到Materials文件夹并打开M_Particle

目前,颜色是在材质中设置的。要使用粒子系统中的颜色,您需要使用ParticleColor节点。

首先,删除连接到Emissive Color的节点。接下来,添加一个ParticleColor节点并像这样连接它:

揭示

单击应用,然后关闭M_Particle

要设置粒子的颜色,可以使用Initial Color模块。

初始颜色模块

打开PS_Thruster,然后添加一个Initial Color模块。您可以在颜色类别下找到它。

要添加颜色变化,您需要指定颜色的范围。为此,您可以使用分布。

选择初始颜色,然后转到详细信息面板。展开Start Color部分并将 Distribution 更改Distribution Vector Uniform。这将允许您为每个颜色通道指定一个范围。

对于本教程,颜色范围应为橙色到红色。为此,请将Max设置为(1.0, 0.0, 0.0)并将Min设置为(1.0, 0.35, 0.0)

如果您查看视口,您会发现颜色表现异常。

虚幻引擎 4 粒子系统教程

这是因为Color Over Life模块不断将颜色更新为白色。要解决此问题,请选择Color Over Life并按Delete。您的模块列表现在应该如下所示:

关闭PS_Thruster,然后在主编辑器中按Play 。看看那些推进器的火焰!

接下来,您将学习如何切换粒子系统,具体取决于船是否在移动。

切换粒子系统

要检查船是否在移动,您可以检查玩家是否按下了任何移动键。

打开BP_Player并找到Event Tick节点。将以下设置添加到节点链的末尾:

让我们来看看这个设置的作用:

  1. 这将检查MoveUpMoveRight轴映射。如果两者都返回0,则意味着玩家没有按下任何移动键。
  2. 如果Branch返回true(玩家没有按下任何移动键),则停用ThrusterParticles
  3. 如果Branch返回false(玩家正在按下移动键),则激活ThrusterParticles

单击编译,然后关闭BP_Player。按播放并在移动和不移动之间切换以查看切换。

现在是有趣的部分了:创建一个爆炸粒子系统!

创建爆炸效果

您将复制推进器粒子,而不是创建新的粒子系统。导航到ParticleSystems文件夹,右键单击PS_Thruster选择Duplicate。将其重命名为PS_Explosion然后打开它。

对于爆炸,所有粒子应该同时产生而不是一个一个产生。这称为突发发射

创建突发

首先,您需要将生成率设置为零,因为您不想使用默认生成行为。选择Spawn模块并将Spawn\Rate\Distribution\Constant设置为0

接下来,您需要告诉发射器您要创建一个爆发。向下滚动到Burst部分并将新条目添加到Burst List。您可以通过单击+图标来执行此操作。

每个条目将包含三个字段:

  1. 计数:产生多少粒子。将此设置为20
  2. Count Low:如果大于或等于 0,则生成的粒子数量范围为Count LowCount。将其保留为-1
  3. 时间:何时产生粒子。值 0 表示发射器生命周期的开始。值 1 表示发射器的生命周期结束。将其保留为0.0

注意:您可以在“必需”模块中找到发射器的持续时间。它在Duration部分下列为Emitter Duration

这意味着发射器将在其生命之初产生20 个粒子。

为了让它看起来像爆炸,你需要设置速度,使粒子向外移动。

向外移动粒子

由于这是一个自上而下的游戏,您只需要指定 X 和 Y 速度。选择Initial Velocity模块并展开Start Velocity\Distribution。将Max设置为(1000, 1000, 0)并将Min设置为(-1000, -1000, 0)

通过指定从负到正的范围,粒子将从发射器向外移动。

接下来,您需要设置发射器应循环的次数。

Setting the Emitter Loops

默认情况下,发射器将无限循环。 这对于火焰和烟雾等效果非常有用,但爆发应该只播放一次。 要解决此问题,您需要告诉发射器仅循环一次。

选择所需模块,然后找到持续时间部分。 将发射器循环设置为 1。

现在,是时候在敌人死亡时播放爆炸了!

Spawning Particles on Enemy Death

返回主编辑器并导航到 Blueprints 文件夹。 打开 BP_Enemy,然后找到 OnDeath 事件。

要生成粒子系统,您可以在 Location节点处使用Spawn Emitter 。创建一个并将其连接到Destroy Actor

接下来,将Emitter Template设置为PS_Explosion

最后,创建一个GetActorLocation并将其连接到Location引脚。

现在,当敌人死亡时,它会在敌人的位置生成一个PS_Explosion实例。

单击编译,然后返回主编辑器。按播放并开始拍摄一些坏人。

看看那些爆炸!接下来,您将通过使它们与敌人的颜色相同来为它们添加一些额外的香料。

将爆炸颜色更改为敌人颜色

要使用敌人的颜色,您需要一种从蓝图中接收该信息的方法。幸运的是,Cascade 有一个允许这样做的分发类型。

打开PS_Explosion并选择Initial Color模块。将Start Color\Distribution设置为Distribution Vector Particle Parameter

这将为您提供一个可以使用蓝图设置的参数。将参数名称设置为PrimaryColor

对于爆炸,您将使用敌人的两种颜色。要使用第二种颜色,您将需要另一个发射器。右键单击发射器上的空白区域并选择Emitter\Duplicate and Share Emitter。这将复制发射器。

您会注意到现在每个模块旁边都有一个+号。通过使用Duplicate 和 Share Emitter而不是Duplicate,您已经链接了模块而不是复制它们。您在一个模块中所做的任何更改也将在另一个发射器的同一模块中发生。如果您想更改所有发射器的属性(例如大小),这很有用。

您需要更改的唯一模块是Initial Color。但是,如果您进行更改,两个发射器都会收到更改。在这种情况下,您不希望模块被链接,因为它们需要单独的参数名称。取消链接的最简单方法是删除重复的初始颜色模块并创建一个新模块。

注意:在撰写本文时,没有用于取消链接模块的内置方法。

选择新的Initial Color并将Start Color\Distribution设置为Distribution Vector Particle Parameter。接下来,将Parameter Name设置为SecondaryColor

至此,粒子系统就完成了。关闭PS_Explosion

接下来,您需要使用蓝图设置参数。

使用蓝图设置粒子参数

打开BP_Enemy,然后在Spawn Emitter 之后的 Location添加突出显示的节点:

这将允许您在PS_Explosion中设置两个参数。

现在,您需要设置正确的参数名称。将第一个Set Color Parameter的Parameter Name设置为PrimaryColor。将第二个Set Color Parameter的Parameter Name设置为SecondaryColor

最后,您需要提供颜色。为了使事情更容易,颜色已经存储在变量PrimaryColorSecondaryColor中。将每个变量连接到它们各自的节点,如下所示:

这是您最终应该得到的结果:

让我们回顾一下事件的顺序:

  1. 当敌人死亡时,它会在其位置生成一个PS_Explosion实例
  2. PS_ExplosionPrimaryColor参数将被设置
  3. 将设置PS_ExplosionSecondaryColor参数

单击编译,然后关闭BP_Enemy。按播放并开始射击敌人以查看粒子混乱!

 工程地址:张乂卓从头学UE4/Particle

原文链接:https://www.raywenderlich.com/270-unreal-engine-4-particle-systems-tutorial

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

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

相关文章

filter - 常用滤镜效果(毛玻璃、图片阴影、图片褪色)

文章目录 filter 属性滤镜算法函数blur:高斯模糊hue-rotate:色相环contrast:对比度grayscale:灰度drop-shadow:图片阴影 常见的滤镜效果图片内容轮廓阴影毛玻璃图片黑白调整图片色相和对比度使元素或文字变圆润 filter…

租赁小程序|租赁系统一种新型的商业模式

租赁市场是一个庞大的市场,它由出租人和承租人组成,以及相关的中介机构和供应商等。随着经济的发展和人们对灵活性的需求增加,租赁市场也在不断发展和壮大。特别是在共享经济时代,租赁市场得到了进一步的推动和发展。租赁系统是一…

储能领域 / 通讯协议 / 技术栈 等专有名字集锦——主要收集一些储能领域的专有名词,以及相关的名词

目录 名词解释ModbusIOT设备通讯协议 CAN/ RS-485 储能术语电池管理系统Battery Management System,BMS电池相关知识拆解电池的构成逆变器 电池核心参数SOC 电池剩余容量 名词解释 英文中文biz layer业务层与业务层通信的服务CRC循环冗余校验(CRC&#…

开发一款小程序游戏需要多少钱?

小程序游戏的开发成本因多种因素而异,无法提供具体的固定数字。以下是影响小程序游戏开发成本的一些关键因素: 游戏规模和复杂度: 小程序游戏可以是简单的休闲游戏,也可以是更复杂的策略游戏。规模和复杂度会影响开发所需的时间和…

软件测试入门:静态测试

什么是静态测试 顾名思义,这里的静态是指程序的状态,即在不执行代码的情况下检查软件应用程序中的缺陷。进行静态测试是为了仅早在开发的早期阶段发现程序缺陷,因为这样可以更快速地识别缺陷并低成本解决缺陷,它还有助于查找动态…

UE基础篇六:音频

导语: 通过实现一个小游戏,来学会音频,最后效果 入门 下载启动项目并解压缩。通过导航到项目文件夹并打开SkywardMuffin.uproject来打开项目。 按播放开始游戏。游戏的目标是在不坠落的情况下触摸尽可能多的云。单击鼠标左键跳到第一朵云。 游戏很放松,不是吗?为了强调…

【分布式】BASE理论详解

一、什么是BASE理论? BASE理论是对分布式系统设计和处理的一种理论指导,相对于ACID(原子性、一致性、隔离性和持久性)这一强一致性模型,BASE更强调在分布式系统中牺牲强一致性以获得可用性和性能的平衡。 BASE 理论是…

安装插件时Vscode XHR Failed 报错ERR_CERT_AUTHORITY_INVALID

安装插件时Vscode XHR Failed 报错ERR_CERT_AUTHORITY_INVALID 今天用vscode 安装python插件时报XHR failed,无法拉取应用商城的数据, 报的错如下: ERR_CERT_AUTHORITY_INVALID 翻译过来就是证书有问题 找错误代码的方法: 打开vscode, 按F1…

MYSQL中的触发器TRIGGER

1.概念 触发器是一个特殊的存储过程,当触发器保护的数据发生变更时就会触发。 2.特性 1.触发器与表息息相关,一般我们一个表创建六个触发器。 2.六个触发器其实是三种类六个 insert 类型 before | after insertupdate 类型 before | af…

Kubernetes基础知识了解

一、Kubernetes简介 Kubernetes是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务。通过Kubernetes能够进行应用的自动化部署和扩缩容。在Kubernetes中,会将组成应用的容器组合成一个逻辑单元以更易管理和发现。Kubernetes积累了作为Google生产…

51单片机的基础知识汇总

文章目录 51单片机之点灯51单片机之灯的亮灭交替51单片机之灯的流水灯51单片机之数码管数字显示51单片机之数码管数字的流水灯51单片机之数码管数字的0-7显示51单片机之蜂鸣器的鸣叫与关闭51单片机之DS1302时钟设置51单片机之读出温度传感器温度代码模块化汇总主函数main.c 延时…

利用回溯绕过正则表达式

目录 利用strpos的特性拿到flag 利用回溯绕过正则表达式 利用回溯次数绕过正则表达式并且实现文件上传 使用回溯绕过正则表达式waf拿到flag 本篇会讲解三个实验来分别绕过正则表达式,python的正则表达式和Javascript的正则表达式大致相同如果有正则表达式不太懂…

千梦网创:实现自动化“挂机躺盈”的三种方法

在互联网众多行业中,有很多人一直在寻找所谓的“挂机躺盈”的项目,在理财领域这种收入被称为“被动收入”。 天上不会掉馅饼这是一句讲烂掉的话了,躺在家里吃白食等着钱进账是一件不可能的事情。 然而如果你看到身边有“被动收入”的例子&a…

QTableWidget 设置列宽行高大小的几种方式及其他常用属性设置

目录 效果: 1.列宽、行高自动分配 2.固定值 3.随内容分配列宽 随内容分配行高 4.水平方向标签拓展剩下的窗口部分,填满表格 5.列宽是自动分配的,但是第一列可手动调整宽度,而表格整体的列宽仍是自动分配的。第二、三列办法调…

UE基础篇五:动画

导语: 视频文档在文末 一、动画 1.1 物理资产可以用来做布娃娃系统 1.2 混合空间 调整这个值会在动画切换时有一个插值时间,表现为等一下再切 1.3 启用根运动 1.4 一些导入设置只有在导入时才有效, 1.5 动画图标可以预览调节数值<

类和对象(7):初始化列表

class Date { public:Date(int year 1, int month 1, int day 1){_year year;_month month;_day day;}private:int _year;int _month;int _day; };构造函数体内的语句只能称为赋初值&#xff0c;不能称为初始化。初始化只能初始化一次&#xff0c;而构造函数体内可以多次…

【洛谷算法题】P5712-Apples【入门2分支结构】

&#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5712-Apples【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格式&…

Excel Unix时间戳和日期时间格式的相互转换

时间戳转日期时间 ((A18*3600)/86400)DATE(1970,1,1) # 或 (A18*3600)/8640070*36519# 带格式化 TEXT((C18*3600)/8640070*36519,"yyyy-mm-dd hh:mm:ss")首先加8小时进行时区转换&#xff0c;然后转换成天数&#xff0c;再加上1970年1月1日&#xff0c;最后设置日期…

在node-red 的function中使用第三方的npm 库来处理业务逻辑

首先找到node-red的安装目录,这个目录可以在启动日志里看到。 如我的 我的就是在 /Users/fizz/.node-red 进入该目录,安装所需要的库 如 npm install lodash 然后在setting.js 中配置functionGlobalContext // The following property can be used to seed Global Context …

从0开始学习JavaScript--JavaScript 函数

JavaScript中的函数是编写可维护、模块化代码的关键。本文将深入研究JavaScript函数的各个方面&#xff0c;包括基本语法、函数作用域、闭包、高阶函数、箭头函数等&#xff0c;并通过丰富的示例代码来帮助读者更好地理解和应用这些概念。 函数的基本语法 函数是一段可被重复…