您的位置:首页 > 移动开发 > Unity3D

Unity3d学习笔记(三)Legacy粒子系统提前和延迟发射

2014-01-21 18:00 337 查看
        Unity的Legacy粒子系统里面有些参数可能会让人迷惑,如果不是有心人专门指点,你根本不知道为啥你调的那个参数没有任何作用……比如Stretched Particles,大家都知道这个字面意思代表什么,但是当你复制了一个已有的粒子系统,而粒子的速度恰好为0,那么你就会发现粒子消失了。后来才知道stretched必须和粒子运动方向对应……还有一个叫one shot的参数,你勾选之后会发现粒子是一波一波地发射的,但是发射间隔根本没法调整,而且如果想要只发射一下,必须勾选Auto destructed。其实这些弄懂了也都还好,最关键的是这个粒子系统没法预热,也就是每次开始游戏,粒子都是慢悠悠地从少到多地发射,我实在没法想象如果要做循环该怎么办……另外一点,如果一个特效的需要有些节奏感的话,粒子系统的延迟发射必不可少,但是Legacy粒子竟然没有这个参数!我现在总算明白了他们后来为啥要重新写一个粒子系统了,这个就是拿来凑数的……废话不提,如果需要粒子系统提前或者延迟发射的话,就要用到这个脚本:
var delayTime:float=0;
var delayPlusTime:float=0;
var rampDownTime:float=1;
var origMinEmission:float;
var origMaxEmission:float;

function Start () {

origMinEmission=particleEmitter.minEmission;
origMaxEmission=particleEmitter.maxEmission;
particleEmitter.emit=false;

}

function Update () {
if((delayTime+delayPlusTime)>0) delayTime-=Time.deltaTime;

if(delayTime<=0 && particleEmitter.emit==false) particleEmitter.emit=true;

if((delayTime+delayPlusTime)<=0){
particleEmitter.minEmission=origMinEmission*rampDownTime;
particleEmitter.maxEmission=origMaxEmission*rampDownTime;
rampDownTime-=Time.deltaTime;
if(rampDownTime<0){ rampDownTime=0;}
}

}
参数的用法如下:delayTime是负数则播放提前,反之延后,delayPlusTime是用来设置何时粒子数量开始衰减,具体时间点为delayTime+delayPlusTime。rampDownTime是逐渐减弱粒子发射量所用的时间,最后两个参数没有作用(不知道如何隐藏起来)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity3d