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

# 开始

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

image-20210726143918376

搭建的场景如图所示:

image-20210726144023543

# 🔸认识 VFX Graph

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

image-20210726144442857

# 🔹 编写 Graph

# 孵化器循环

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

image-20210726144914494

# 初始化粒子

image-20210726150137280

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

# 渲染粒子

image-20210726230116859

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

效果

# 更新粒子 - 使用重力

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

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

image-20210726230856799

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

# ❤️完善火花

# 发射形状

image-20210726233034173

# Local 和 World 坐标

image-20210726233115448

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

# 添加碰撞

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

# 碰撞框

添加如下碰撞框组件:

其中: LifeTime Loss为生命损失

image-20210729201752721

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

# 碰撞事件

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

碰撞响应

事件处理

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

# 完善和脚本控制

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

脚本控制VFX
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 自动生成一个特效

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Fasty 微信支付

微信支付

Fasty 支付宝

支付宝

Fasty 贝宝

贝宝