You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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了,这种情况下粒子不会播放。
  • 粒子引用的是预制体而非场景实例
    如果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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 21:30:13