VFXGraph体验-火花效果

本文采用:unity2021.1.5f1c1 HDRP渲染管线

开始

创建HDRP项目,并设置好相关配置。

image-20210726143918376

搭建的场景如图所示:

image-20210726144023543

:small_orange_diamond:认识VFX Graph

创建一个VFX Graph可以点击Edit进入编辑界面,其编辑界面和ShaderGraph类似。

image-20210726144442857

:small_blue_diamond: 编写Graph

孵化器循环

针对于持续性和非持续性进行区分

image-20210726144914494

初始化粒子

image-20210726150137280

完成上述2个步骤时,效果如下,记得替换粒子的贴图

渲染粒子

image-20210726230116859

通过渲染器设置,火花效果更好了

效果

更新粒子-使用重力

现在我们的火花是直线发射的,我们想让其受到一个重力自动下垂。

在更新粒子模块,增加重力,设置一个随机数重力。

image-20210726230856799

添加重力后,可以看到我们的粒子受重力而下垂。

:heart:完善火花

发射形状

image-20210726233034173

Local和World坐标

image-20210726233115448

在布局坐标中,粒子效果不会残留,为了让我们的火花可以在世界中残留,需该为世界坐标系

添加碰撞

我们希望火花粒子能够和周围环境产生碰撞

碰撞框

添加如下碰撞框组件:

其中:LifeTime Loss为生命损失

image-20210729201752721

发现我们的粒子在接触碰撞框时会被弹开。

碰撞事件

为了响应碰撞添加如下组件

碰撞响应

事件处理

其效果如下,每个粒子碰撞死亡后将生产1个蓝色粒子

完善和脚本控制

调整一下粒子,将循环关闭,使用脚本控制粒子。

脚本控制VFX
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class VFXTest : MonoBehaviour
{

public GameObject vfx;

private void Update()
{
if (Input.GetKeyDown(KeyCode.A))
{
var go = Instantiate(vfx, transform.position, Quaternion.identity);
var vf = go.GetComponent<VisualEffect>();
vf.Play();
Destroy(go, 2f);
}
}
}

其效果如下图所示,按下A自动生成一个特效