在尝试在Unity中制作VFX时,我们经常使用粒子系统。Unity 粒子系统和着色器是在 Unity 中创建 VFX 效果最常用的两种方法。在本文中,我们将学习Unity Particle 系统的基础知识,并尝试使用它创建一些基本效果。
Unity粒子系统简介
Unity 粒子系统是在 Unity 中创建逼真动态特效的强大工具。它允许开发人员创建不同类型的效果,包括爆炸、火焰、烟雾等等。粒子系统提供了广泛的控件和参数,使开发人员能够创建高度可定制的效果。它可用于创建 2D 和 3D 效果,并且与 Unity 的内置物理引擎兼容,允许粒子和其他游戏对象之间实现逼真的交互。
粒子系统的基本参数
- 持续时间 - 如果未设置为循环,粒子效果将保持的时间(以秒为单位)。
- 循环 - 如果设置为 true,则粒子效果将一遍又一遍地循环。
- 预热 - 如果设置为 true,则粒子效果将从更多粒子和更多速度开始。通常,看起来一个循环周期已经完成。
- 启动延迟 - 系统在发射第一个粒子之前等待的时间延迟(以秒为单位)。
- 开始生存期 - 发射粒子的生存期。
- 启动速度 - 发射粒子的启动速度。
- 3D 起始大小 - 在 X、Y 和 Z 轴上指定不同的大小。
- 起始大小 - 粒子的初始大小。
- 3D 开始旋转 - 指定 X、Y 和 Z 轴上的旋转。
- 开始旋转 - 粒子的初始旋转
- 翻转旋转 - 导致某些粒子以相反的旋转翻转。值可以设置为 0 到 1 之间。值为 1 将导致所有粒子翻转。
- 起始颜色 - 发射粒子的初始颜色
- 重力修改器 - 将指定值与重力相乘。值为 0 表示粒子系统不受重力影响
- 模拟空间 - 您可以将模拟空间设置为本地、世界或自定义。
- 模拟速度 - 您可以设置周期时间乘数。
- 增量时间 - 使用时间.增量时间或时间[.未缩放增量时间]
- 缩放模式 - 您可以根据形状、Hierarachy 或局部空间缩放粒子。
- 唤醒时播放 - 启用后,系统将自动开始发射粒子。
- 发射器速度模式 - 您希望如何计算速度?使用[Unity刚体]还是变换?
- 最大粒子数 - 在给定时间可以存活的粒子总数。
- 自动随机种子 - 将系统时间作为随机种子。您可以取消选中此选项并指定您拥有。
一些基本参数有一些额外的选项。这些参数有一个下拉箭头来选择它。例如,将常量作为输入的参数可以采用范围或曲线。
粒子系统高级参数
Unity 粒子系统的高级参数允许您设置发出的粒子的更多自定义属性。您需要设置的值完全取决于您正在创建的最终效果。其中最重要的是发射、形状和渲染器。
释放
发射属性允许您设置三个主要参数。
- 粒子随时间发射的速率。
- 远距离发射的粒子速率。
- 定期设置突发粒子发射。
形状
您可以从预定义的选择中选择粒子系统的形状。然后,您可以使用其他可用参数修改形状。
渲染
渲染器允许您指定[渲染模式],设置材质以及与粒子渲染相关的大量属性。
让我们看一些有关如何使用这些参数创建VFX效果的示例。
使用粒子系统创造火焰
- 通过单击添加>效果>粒子系统将粒子系统添加到场景中。
- 现在转到形状参数并将其设置为圆锥体。
- 将圆锥半径设置为 0.1,将角度设置为 0。
- 设置为粒子系统参数并将持续时间设置为 5,启动寿命设置为 5,启动速度为 0.5。
- 转到生命周期内的颜色参数并如下图所示进行设置。顶部的指示器表示 alpha 值,底部的指示器表示颜色。
- 设置生命周期内的大小曲线,如下所示
现在你的粒子系统应该看起来像一团火。
为了使它更逼真,让我们添加材料
- 在项目窗口中创建新材质。
- 将材质着色器设置为粒子/无光照。
- 选择“表面类型”为“透明”。
- 混合模式为多重,颜色模式为添加剂。
- 将火形状图像(具有透明背景)添加到底图。您可以从[免费 Unity 资源]网站列表中免费找到一个。
- 转到粒子系统>渲染并将此材质分配给它。
- 这是最终结果。
有一个内置选项可以在 Unity 中创建雾。但在 URP 的情况下,您没有体积雾选项。我们可以使用使用粒子系统制作的自定义雾来克服这个问题。
在项目窗口中创建一个名为“雾”的新材质。
设置材料属性,如下图所示。将底图的 alpha 值设置为 40。
通过单击“添加>效果>粒子系统”将粒子系统添加到场景中。
现在转到检查器窗口并为粒子系统设置以下属性
- 持续时间至 1000
- 检查循环和预热为 true。
- 开始生存期至少为 30 秒。
- 单击启动速度附近的向下箭头,然后选择“两个常量之间的随机”。
- 将值设置为 0.1 到 0.2。
- 检查 3D 开始大小并给出 5 作为所有轴的值。
- 转到形状设置。
- 将形状设置为球体。
- 半径基于您的雾大小。在演示中设置为 1。
- 转到生命周期内的颜色,并在开头和结尾将 alpha 设置为 0。
- 在中心创建一个新点,并将 alpha 设置为最大值。
- 这将产生透明效果。
- 就是这样,你准备好部署了。
绕过设置以对其进行更多自定义。
使用代码控制粒子系统
您可以使用代码控制粒子系统的所有参数。您需要使用 get 组件函数获取粒子系统,然后您可以引用它来访问参数。
获取粒子系统组件的示例代码
using UnityEngine;
public class ControlParticles : MonoBehaviour
{
ParticleSystem part;
// Start is called before the first frame update
void Start()
{
part=GetComponent<ParticleSystem>();
if(part.isPlaying)
{
Debug.Log("particle Effect is live");
}
}
}
您可以使用代码访问粒子系统的所有属性。现在轮到你玩粒子系统了。如果您有任何疑问,可以将其留在下面的评论框中。