粒子系统:爱心群

0 前言

项目内容:利用粒子系统创造简易的绽放爱心群,并辅以控制组件

灵感来源:很多图片和视频都有类似的特效,所以就想看看能不能做出效果更炫的特效。

1 效果以及项目地址

视频链接:粒子系统 - 爱心群绽放

项目地址:大作业:粒子系统(爱心群) · Eh/3d-game - 码云 - 开源中国 (gitee.com)

2 构建粒子系统

2.1 基础物体创建
2.1.1 材料准备

需要准备如下材料:

  • 带有透明通道的爱心 png 图片(可以用 photoshop(PS如何快速画出红色实心的心形-百度经验 (baidu.com)) 自制, 但我没有photoshop,是在 iconfont 下载的);

  • (可选)在asset store 下载暗色的背景(我下载的是 Urban Night Sky)并导入,便于效果展示。

    1. 首先选择“添加至我的资源”,加载后单击 “在unity中打开”,确认后跳转至 unity;
      在这里插入图片描述

      图1:asset store搜索资源

    2. 在unity中,选择“Download-import-import”,资源包就添加到如下目录了: 在这里插入图片描述

图2:unity中导入资源包
2.1.2 创建爱心 Material
  1. 新建 Material:在 Asset 目录下的空白位置(如图3红色箭头所示)右击鼠标,移动到 Create 处,在子目录下选择 Material ,并重命名为 heart, 结果如图3所示:
    在这里插入图片描述
图3
  1. 参数设置:按照图4步骤,将爱心的 ShaderParticle Texture 参数设置好。
    在这里插入图片描述
图4:heart 参数设置
2.1.2 创建粒子系统
  1. 新建一个 ParticleSystem 作为父物体,命名为 ParticleParent
    在这里插入图片描述
图5:在黄色箭头处右击 — Effects — ParticleSystem
  1. 参数设置:如图6所示,关闭它的粒子渲染,仅作为选中可播放粒子效果使用。
    在这里插入图片描述
图6:Open Editor — 取消勾选 Emisson 和 Render
2.2 其他参数设置
2.2.1 第一层效果
  • 主要负责:爱心跳动效果。
  1. 创建子粒子系统 heart,基本参数设置如图7;
    在这里插入图片描述

    图7:勾选 Renderer — Material 设为 heart texture
  2. 参数设置:如图8,设置 ShapeSphere 使得爱心从中间生成,Velocity 添加Y向上的效果,Color over Lifetime 设置渐显渐隐的效果,Size over Lifetime 添加渐大渐小的爱心跳动的感觉;
    在这里插入图片描述

    图8:heart 其他参数设置 (1)
    1. 更多参数设置:如图9,Start Lifetime 调小,心跳的效果会更明显,Start Rotation 使得 生成的爱心轻微左右有变化,不那么单一的正向,其他根据自己需要调整即可;
      在这里插入图片描述
    图9:heart 其他参数设置 (2)
2.2.2 第二层效果
  • 主要负责:由中心发散爱心效果。
  1. 创建子粒子系统 heart (1) 基本参数设置如图7;

  2. 其他参数设置:如图10,勾选 Emission,设置 ShapeSphere 使得爱心从中间生成(半径大小根据 Start Speed 适当调整),Color over Lifetime 设置渐显渐隐的效果,Size over Lifetime 添加渐大渐小的爱心跳动的感觉;
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/6581c3dbe16040b395a3667f84a85781.png#pic_center#=50%x

    图10:heart (1) 其他参数设置
  3. 更多参数设置:如图11Start Lifetime 适当比第一层爱心调长,Start Speed 调快一点,Start Size 适当调小,配合第一层放大心跳的感觉效果;
    在这里插入图片描述

    图11:heart (1) 其他参数设置
    备注:因为我的爱心图片比较小(模糊),所以在后期我把上面的参数都调大了不少倍,效果才相对清晰一些。
2.3 设置背景
  1. 添加 skybox组件:如图12,单击 MainCamera — 选择 Add Component — 选择 Skybox
    在这里插入图片描述

    图12

  2. Custom Skybox设为 skybox,效果如图13:
    在这里插入图片描述

图13:设置背景后的效果
2.4 拖尾效果

原本想再做一个爆炸效果,但是感觉爱心爆炸怪怪的,就算了……

  1. 新建子发射器:在 heart (1) 内勾选Sub_Emitters,会自动生成一个子发射器,命名为 tailMaterial 也是爱心;
    在这里插入图片描述
图14
  1. tail 参数设置:注意把 Size over lifetime 设置为线性递减的直线,这样才能达到拖尾的效果,即逐渐变小直至消失;在这里插入图片描述
图15:tail 参数设置

3 设置控制组件

3.1 创建滑动条

设置参数如图16:在这里插入图片描述

图16:Slider 参数设置
3.2 脚本:control.cs

功能:

  • 设置两个按钮,控制开始和结束绽放爱心群;
  • 利用 startLifetime 控制爱心的绽放速率。
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System;
public class control : MonoBehaviour
{
    public GameObject play;
    public ParticleSystem ParticleParent, heart; 
    public GUIStyle buttonstyle;
    // 滑动条    
    public Slider slider;
    public float hSliderValue = 3.0F;
    // public ParticleSystem[] child;
    // public float value;     // 保存滑动条的值

    void OnGUI(){
        if (GUI.Button (new Rect (0,Screen.height-55,80,55), "开始绽放")) {
            ParticleParent.Play();   
        }
        if (GUI.Button (new Rect (80,Screen.height-55,80,55), "停止绽放")) {
            ParticleParent.Stop();
        }
        GUI.Label (new Rect(20, 25, 100, 30),"绽放速度:");        
        hSliderValue = GUI.HorizontalSlider(new Rect(80, 30, 100, 30), hSliderValue, 0.0F, 10.0F);
        // speed = slider.value;
    }
 
    // Start is called before the first frame update
    void Start()
    {
        play = GameObject.Find("play");
        slider = play.GetComponent<Slider>();
        heart = GetComponent<ParticleSystem>();
        // child = ParticleParent.GetComponentsInChildren<ParticleSystem>();
        // for(int i=0; i<child.Length; i++ )
        // {
        //     if(child[i].name=="heart (1)")
        //     {
        //         heart = child[i];
        //     }
        // }
    }

    // Update is called once per frame
    void Update()
    {
        var main = heart.main;
        main.startLifetime = hSliderValue;
    }
}
3.3 操作

将脚本 control.cs 挂在到 GameObject play 上,各参数设置如下:在这里插入图片描述

3.3 操作

将脚本 control.cs 挂在到 GameObject play 上,各参数设置如下:在这里插入图片描述

至此,项目效果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值