粒子系统与流动效果(三选一)
简单粒子制作
作业要求
- 按参考资源要求,制作一个粒子系统,参考资源
- 使用 3.3 节介绍,用代码控制使之在不同场景下效果不一样
实现
1. 制作粒子系统
-
制作的粒子
我们要制作的粒子如下图所示:
对粒子进行分解,它由以下部分组成:
(1) 光晕(不止一个)
(2)星光
光晕是粒子的整体部分,把它当作粒子的父类节点,因此我们的制作顺序是先光晕
后粒子
。 -
获取材质
按照参考资源的要求,制作该粒子系统所用到的材质贴图为:http://pan.baidu.com/s/1nvlQST7下载并放到assets中:
-
制作光晕
(1)首先新建一个Particle System
:GameObject
->Effects
->Particle System
, 命名为halo
;
(2)将获取的材质应用到halo
中:Renderer
->Material
->fx_article_drop01
;
Renderer
的设置为:
(3) 因为中间部分的粒子不会移动,所以将halo
的speed设置为0。halo
的主体参数为:
(4)我们的主要目的是让光晕填充完这个粒子,shape可以设置为 Box 或 Sphere。
Emission
和Shape
的设置如下:
(5) 光晕由于受四周的光照影响,在实际中,光晕从出生到消失的时候是从无到有,然后转为无,因此整个生命周期的颜色变化为黑-白-黑。
(6)上述所创建的halo
还只是一个骨架,还需要其他粒子来修饰,所以我们接着创建子粒子:右键halo
->Effects
->Particle System
, 命名为childHalo
。由于创建的halo
只是光,并没有很强的光晕,因此childHalo
的作用就是增强光晕效果。光晕是通向四周360度的,所以childHalo
再出生的旋转方向应该是四周随机的,childHalo
的Shape可以定义为任何形状,只要把半径改为0,它将从一个点发散出去。
childHalo
的属性设置:
-
制作星光
星光的效果是从粒子的主体部分向四周发射,他也是从无到有,从大到小,再消失。因此,我们以halo
为父对象再创建一个Particle system
,并命名为stars
,使用的材料与halo
相同,Shape
可以是Sphere
或HimSphere
,生命周期的颜色变化是黑 - 橙黄(与halo
一致) - 白(变淡的效果) - 黑。
stars
的属性设置:
-
粒子效果图
完成上述步骤后,粒子的效果是这样的:
Partical System
2. 用代码控制使之在不同场景下效果不一样
写一个脚本Particle.cs
, 用于改变粒子的初始大小和系统中同时允许的最多粒子数。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Particle : MonoBehaviour
{
public float start_size;
public int max_particles;
ParticleSystem particle;
// Start is called before the first frame update
void Start()
{
particle = GetComponent<ParticleSystem>();
particle.startSize = start_size;
particle.maxParticles = max_particles;
}
// Update is called once per frame
void Update()
{
}
}
将脚本挂载到之前做好的粒子系统上,会显示两个属性值:start_size
和max_particles
,更改这两个属性值然后运行场景,会发现粒子的数量和大小发生改变。
Halo