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

Unity中碰撞触发AudioClip失效问题求助

排查火箭碰撞死亡音效不触发问题

核心原因:播放条件判断逻辑错误

你的死亡音效播放逻辑加了!audioSource.isPlaying的判断,但碰撞发生时如果玩家还按着Space键,引擎音效正处于播放状态,audioSource.isPlaying为true,直接跳过了死亡音效的播放。

而且PlayOneShot本身支持同时播放多个音频(不会中断当前音效),完全不需要这个前置判断。修改后的碰撞方法代码如下:

void OnCollisionEnter(Collision collision)
{
    if (collision.gameObject.name == "Start")
    {
        return;
    }

    if (collision.gameObject.name == "Finish")
    {
        Debug.Log("Finished");
        return;
    }

    // 移除不必要的播放条件判断,直接触发死亡音效
    Debug.Log("Dead");
    audioSource.PlayOneShot(dying);
    Invoke("ReloadLevel", 1f);
}

额外优化建议

当前Flying()方法里的else分支会在松开Space时直接调用audioSource.Stop(),如果后续有其他音效在播放,可能会被误停止。可以改成仅当引擎音效在播放时才停止:

else
{
    if (audioSource.isPlaying && audioSource.clip == mainEngine)
    {
        audioSource.Stop();
    }
}

最后验证项

  • 确认Inspector面板中dying音频剪辑已正确赋值给对应的字段
  • 检查AudioSource组件未勾选Play On Awake(避免初始状态干扰播放判断)

内容的提问来源于stack exchange,提问作者repinSlun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 15:48:30