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

2DTrigger未生效:碰撞硬币时无法销毁问题求助

硬币碰撞后未销毁的问题排查方案

以下是几个必须检查的关键点,按顺序排查:

  • 检查Collider2D设置:

    • 硬币对象的Collider2D组件必须勾选Is Trigger选项。
    • 玩家对象的Collider2D不能勾选Is Trigger(新手教程场景下一般用物理碰撞体触发)。
  • 确保存在Rigidbody2D组件:
    Unity的2D触发事件要求碰撞双方中至少有一个带有Rigidbody2D组件,且该组件不能勾选Kinematic(手动处理触发逻辑的情况除外)。通常给玩家对象添加Rigidbody2D即可,保持默认参数。

  • 确认脚本挂载位置:
    你写的这段代码必须挂载在硬币对象上,要是挂到玩家或其他对象上,触发时销毁的就不是硬币了。

  • 添加调试日志验证触发状态:
    修改代码添加日志,确认触发事件是否真的被调用:

    private void OnTriggerEnter2D(Collider2D collision)
    {
        Debug.Log("触发碰撞,碰撞对象:" + collision.gameObject.name);
        Destroy(gameObject);
    }
    

    运行游戏后查看Console面板:

    • 没有日志:说明触发事件没触发,回到前三点重新检查;
    • 有日志但硬币没销毁:检查Destroy(gameObject)是否正确(脚本在硬币上的话这个写法没问题,若要销毁碰撞对象则改成Destroy(collision.gameObject))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:18:26