Unity学习笔记(4)—–粒子效果的实现
一.效果展示
下面用若干张张动图展示效果:
大概就是这样,并不是很难。 实际效果要比图中的好一点(顺畅得多)。
实现步骤
大致可以分为如下几个步骤,然后逐个实现就可以了:
- 生产粒子
- 设置粒子初始属性(位置, 颜色, 速度等)
- 控制粒子旋转
- 改变粒子颜色
让颜色均匀旋转
下面分步骤说明。
1.生产粒子
首先我们需要一个ParticleSystem的组件来管理这个粒子系统。 再让组件附着在一个空对象上即可。结构如图:
如图中那样, 我们在这个含有particle System的对象上挂载脚本, 准备对这个粒子系统进行控制。
在写脚本之前, 先对Particle System 进行一些必要的设置, 这样可以在测试脚本的时候看起来更舒服 :), 如图:
嘛, 由于我们都是代码控制, 下面的属性几乎都可以不勾选, renderer除外。 记得给renderer设置一个好看的Material啊 : )
这些都是为粒子能够正常产生做准备。 这些做好后, 就可以开始写脚本控制了, 产生粒子的相关代码如下:(只是产生的话, 超简单!)
using UnityEngine;
using System.Collections;
public class ParticleSea : MonoBehaviour {
public ParticleSystem particleSystem;
private ParticleSystem.Particle[] particlesArray;
public int seaResolution = 25;
void Start() {
particlesArray = new ParticleSystem.Particle[seaResolution * seaResolution];
particleSystem.maxParticles = seaResolution * seaResolution;
particleSystem.Emit(seaResolution * seaResolution);
particleSystem.GetParticles(particlesArray);
}
}
这些变量的含义:
particle System: 用来得到这个Object的particle System(在Inspector中记得把当前的Particle System 拖给脚本变量)
particlesArray: 用来存放粒子系统所产生的粒子的数组。
seaResolution: 粒子海洋的长度(实际粒子数是这个数的平方)。
Ps : 之所以不改为直接用粒子数表示有两个原因:
- 之前我参考的教程的粒子实现时用的这个, 我写这个的时候因为懒直接在那个的基础上做了 ~。~
- 事实上写完想改的时候发现这样可以给粒子简单的分层。有一定的可拓展性(好吧其实没有什么用)
In all, 这样做之后创建过程就完成了。
2.设置粒子初始属性
首先考虑我们需要粒子的哪些属性:
- 粒子速度 speed
- 粒子旋转的半径 radius
- 粒子当前旋转角度 a