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

Unity中C#触碰销毁物体脚本无法正常工作求助

Unity碰撞销毁脚本故障排查

你的代码逻辑本身是正确的,但OnCollisionEnter方法需要满足特定条件才会触发,按以下步骤逐一检查:

  • 双方必须都有启用的Collider组件
    脚本挂载对象和与之碰撞的物体,都要添加Collider(如BoxCollider、SphereCollider),且Collider的Is Trigger选项不能勾选——如果勾选了,需要改用OnTriggerEnter方法。

  • 至少一方要有非运动学Rigidbody组件
    Unity的物理碰撞系统要求,碰撞双方中至少有一个物体带有Rigidbody组件,且该Rigidbody不能设置为Kinematic(如果其中一方是静态场景物体,可以给它添加Rigidbody并勾选Kinematic,同时确保另一方的Rigidbody为非运动学)。

  • 检查图层碰撞矩阵
    打开Edit > Project Settings > Physics,查看图层碰撞矩阵,确认两个物体所在的图层是允许相互碰撞的,不要误取消了对应图层的碰撞勾选。

  • 确认脚本挂载位置
    脚本必须挂载在你想要销毁的目标物体上,如果挂载到了碰撞对象上,会错误销毁碰撞对象,或者因碰撞条件不满足而不触发。

如果以上检查都没问题,可以尝试改用触发模式快速验证:
勾选其中一个物体Collider的Is Trigger,然后替换代码为:

using UnityEngine;

public class DestroyOnCollision : MonoBehaviour
{
    private void OnTriggerEnter(Collider other)
    {
        Destroy(gameObject);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:02:04