最近看了下Unity3d的粒子系统的相关视频,并且动手操作了下,感觉自己的美工技能又增进了下(开个小玩笑),发现粒子系统所需要记忆的东西还是有点多的。
所以为了不让自己遗忘某些知识点,我准备发布成博客,以便以后能够查阅回忆。
OK,废话不多说,马上进入Particle System,相对程序员来说的噩梦:
我们先来看看Particle System在Inspector视窗中的属性:
可见,粒子总共有个Transform组件和Particle System组件。
1.Transform:可以控制粒子在世界或者本地坐标的改变。但是有点注意的是,如果你改变Scale属性值是不会影响粒子的大小缩放的。所以我们想改变粒子大小不能这么改。
2.Particle System:改变粒子的属性,比如大小,发射速度等等。这个也是我们制作粒子的核心组件。
OK,来看看这些属性值的作用。
我们先在Scene中创建一个新的Particle System,然后到Inspector视窗中。
1.我们先来学下他的基本属性:
(1)Duration:粒子持续的时间,什么意思?就是你发射器发送粒子持续的时间。可能还有些绕,举个例子,比如你打火机打开,点个烟。从打开到熄灭火这个过程火焰持续在燃烧,那么这个时间段就是Duration。再举个例子,你煤气在烧两壶水,一个烧水10分钟,一个烧水5分钟。那么煤气灶是粒子发射器,火焰是粒子,10分钟和5分钟就是持续时间。
我们做个小实验,我们把loop勾去掉,因为这个会影响Duration,如果是loop循环发射那么Duration就为无穷大,没有意义。把Duration改成5和1分别试下。
5秒:
可以看到5秒之后呢,粒子就不再发射了。
1:
可以看到1秒之后,粒子就不再发射。
(2)Looping:循环发射粒子。我们打钩之后,粒子发射器就会不断的持续的发射粒子,不管你的Duration调成多少,他都是一成不变的管自己发射。
(3)Prewarm:预热粒子发射。什么意思,当我们开始发射粒子的时候,是不是粒子数量从0开始,然后才慢慢增多,可看到上面额gif。但是当我们勾选这个,他就会在我们点击发射的时候,他不是从数量0开始,而是像已经发射一个周期一样。(注意他只是在Looping打钩的情况下才能使用)
可以看到我一点发射,他数量就已经是发送一个周期的数量。
(4)Start Delay:延迟多长时间开始发射粒子。也就是说我们点击开始发射,他会暂停这么多时间后,然后才开始发射粒子。
(5)Start Lifetime:开始粒子的生命周期。这个值就是单个粒子的生命周期。就像我们人类的寿命一样,比如有个人的寿命80,过了80年,他就从世界上消失了。那么如果一个粒子的开始生命周期是5秒,那么这个粒子发射到Unity3d的World中,过了5秒之后,这个粒子就消亡了,道理是一样的。
那么我们想让不同的粒子有着不同的生命周期,那么怎么弄?放心,在unity中我们生命周期的值是可以设置随机不同的值。具体看下Inspector视窗中的属性:
可以看到他支持4中不同类型的值:
(1.Constant:常量。也就是每个生命周期都一样。
(2.Curve:曲线。
举个例子,假如我Duration是3秒,生命周期钥匙曲线值,那么我弄得曲线是如图。
那么这个曲线是什么意思呢,纵坐标表示生命周期的值,横坐标表示Duration的值。
假如我们在点(0.5,4)做文章,也就是说在一个粒子在粒子发射器已经持续发射0.5秒后发射出来,那么他对应的生命周期就是是4秒,所以越往后面发射生命周期越小,消亡越快。
(3.Random Between Two Constants:随机在两个常量之间。也就说粒子生命周期定在这两个常量中间。比如我定的两个常量是1,10。那么粒子生命周期可能是1,可能是3,可能是10,反正不会超过或者小于两个值。
(4.Randow Between Two Curves:随机在两条曲线之间。
这个也是类似的,但是取值就是两条曲线之间的取值,比如我在图中已经画出了一条直线,如果Duration刚好是图中直线的x坐标值,那么这条直线和两条曲线相交的两个值,那么这个生命周期就会随机从这两个中取一个。
OK,终于讲完了取值。接着我们看。