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是逐渐减弱粒子发射量所用的时间,最后两个参数没有作用(不知道如何隐藏起来)。
相关文章推荐
- CAEmitterLayer,粒子发射系统
- 粒子系统属性Life,发射速率和总数的关系
- 粒子系统属性Life,发射速率和总数的关系
- 粒子系统属性Life,发射速率和总数的关系
- 粒子发射系统中的CAEmitterLayer
- 粒子发射系统属性备忘
- iOS开发进阶 - CAEmitterLayer,粒子发射系统
- CAEmitterLayer CAEmitterCell 一个基于Core Animation的粒子发射系统
- CAEmitterLayer粒子发射系统
- iOS开发进阶 - CAEmitterLayer,粒子发射系统
- Cocos2d-x入门粒子系统详细讲解
- 用DirectX实现粒子系统(一)
- Starling粒子系统工具
- 粒子系统(一)
- OpenGL学习笔记-2015.3.24——transform feedback缓存&粒子系统示例分析
- 密码延迟验证导致的系统HANG住
- ping延迟测试 - 视频会议系统
- 低延迟系统的 11 个最佳实践
- [Unity3D]Unity3D游戏开发之粒子系统
- 虚幻引擎学习之路:粒子系统篇(一)