粒子特效的拖尾模块Life Time小于1,会报错:[Scene] cc.ParticleSystem: life time should bigger than 1 or buffer will be insufficient

粒子特效的拖尾模块Life Time小于1,会报错:[Scene] cc.ParticleSystem: life time should bigger than 1 or buffer will be insufficient

  • Creator 版本: 3.8.4

  • 目标平台:Chrome浏览器

  • 重现方式:粒子特效的拖尾模块Life Time小于1

特效设计方案:可以将粒子特效的拖尾模块Life Time设为1;再将Color OverTime中将想要消失的点设置为透明度0,可以提前消失,但也只是看不见而已,鬼才逻辑。

大佬,你好.
按照你的方法设置之后,好像不生效
拖尾2

我不晓得你要做什么效果。
如果你要做拖尾消失,需在Color OverTime设置消失点,同时需要主模块的配合。
另外一个方法判断:试试高一个版本或者低一个版本,防止遇到版本问题。

需要做射箭的效果,按照图片这么设置会消失,但是形态变了,原来的life time是0.08,是不是要把Clolor over trail 也做相应的改变

你可以录个视频。
正确情况:飞行的箭矢程序上是A点到B点移动;3D粒子从A点到B点,TrailModule无论怎么设置,到达B点,拖尾理应逐渐缩小消失。
正确消失的方式:在拖尾模块中让“width from particle”勾选,控制节点scale的大小缩放即可。如果缩放无效,或者显示错乱,尝试让粒子的渲染模块renderer的align space的对齐方式改成local,看是否生效。

粒子警告.zip (97.5 KB) 大佬方便帮我看一眼吗?我那个拖来拖去,搞出来都不对

粒子警告改.zip (101.3 KB) 你看看这样是你要的效果吗

导入是0.18秒,警告还是在,你那边有警告吗?

粒子警告改2.zip (97.4 KB) 我发现了警告。我修改后,警告消失。查看“粒子警告改2”文件,只是拖尾的透明度难以调节。

粒子特效拖尾模块Life Time小于1,就会出现警告,不知道什么原因。改文件用的版本3.8.0

粒子警告 导入资源重新构建.zip (25.5 KB) 导入拖尾图片资源,新创建拖尾材质,重新构建粒子拖尾效果,关闭工程重新打开,未发现警告。版本3.8.0;参数同“粒子警告改”文件相同,我也不清楚具体问题在哪里。
此文件参数便于调节拖尾的透明度。

谢谢大佬,我用的版本是3.8.3,我先导进去试试

我觉得是提示错了,拖尾声明周期越长,self._trailNum 越大,buffer 才会不够。
const indexBuffer = device.createBuffer(new BufferInfo(

        BufferUsageBit.INDEX | BufferUsageBit.TRANSFER_DST,

        MemoryUsageBit.HOST | MemoryUsageBit.DEVICE,

        Math.max(1, self._trailNum) * 6 * Uint16Array.BYTES_PER_ELEMENT,

        Uint16Array.BYTES_PER_ELEMENT,

    ));

    self._iBuffer = new Uint16Array(Math.max(1, self._trailNum) * 6);

    indexBuffer.update(self._iBuffer);

trail.ts 的update:
public update (): void {
//evaluate 传的要求是归一化的时间,而this._particleSystem!.time 根本没归一化
this._trailLifetime = this.lifeTime.evaluate(this._particleSystem!.time, 1)!;

    if (this.space === ParticleSpace.World && this._particleSystem!.simulationSpace === ParticleSpace.Local) {

        this._needTransform = true;

        this._particleSystem!.node.getWorldMatrix(this._psTransform);

        this._particleSystem!.node.getWorldRotation(_temp_quat);

    } else {

        this._needTransform = false;

    }

}

粒子拖尾buffer空间不够已经修复了: https://github.com/cocos/cocos4/pull/201
这只是个warning并非报错

后面又看了代码,觉得小于 1 提示 应该是正确意图。怕小于1 算出来的buffer 不够,做了warn。但是其实下面的代码又有max(lifeTime,1)所以去除这个提示 就行了,不然输出太多了