Unity碰撞触发后Particle System无法播放的问题排查求助
碰撞触发时粒子系统不显示的可能原因及解决办法
粒子对象未激活或不在视野内
先检查explosionEffect对应的GameObject是不是处于禁用状态(灰色),如果是,调用Play()前先执行explosionEffect.gameObject.SetActive(true)。另外也确认下它的位置是不是在相机拍不到的地方,比如场景外。粒子系统参数设置异常
打开粒子系统的Inspector面板排查:- 看看Loop是不是开着,如果之前播放过没停,再次调用
Play()可能没反应,试试先explosionEffect.Stop()再Play(); - 检查Start Delay是不是设了很长的数值,导致特效延迟太久没显示;
- 确认Emission模块是启用状态,并且Rate over Time或者Burst有数值,不然不会发射粒子;
- 看看Duration是不是设为0了,这种情况下粒子不会播放。
- 看看Loop是不是开着,如果之前播放过没停,再次调用
粒子引用的是预制体而非场景实例
如果explosionEffect拖的是预制体(不是场景中放好的对象),直接调用Play()不会在场景中生成可见特效,得先实例化:Instantiate(explosionEffect, transform.position, transform.rotation).Play();Layer被相机剔除
检查粒子系统所在的Layer,是不是被相机的Culling Mask给排除了,导致相机不渲染这个层的对象。粒子位置不对
可能特效播放的位置不在碰撞发生的地方,比如挂载脚本的对象位置偏移,或者粒子的父对象位置不对。可以把粒子位置设为碰撞点再播放:explosionEffect.transform.position = collidedwith.contacts[0].point; explosionEffect.Play();
内容的提问来源于stack exchange,提问作者debugsaurav
相关产品推荐
相关产品推荐

