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

Unity 3D中OnTriggerEnter函数无法触发问题求助

Unity OnTriggerEnter不生效的排查要点
  • 核心组件配置错误

    • 子弹预制体必须添加Rigidbody组件,且不能勾选Is Kinematic——触发检测需要至少一个动态刚体(运动的对象)参与,静态物体无法主动触发检测。
    • 地板和子弹的Collider组件中,必须至少有一个勾选Is Trigger(如果地板开Trigger,子弹可以是普通Collider;反之亦然)。
  • 标签匹配问题

    • 仔细核对子弹预制体的标签:确保标签是seed1,没有大小写错误或拼写偏差。可以临时在代码里加一行Debug.Log("碰撞到的对象标签:" + hit.gameObject.tag),看看实际碰撞到的对象标签是否和预期一致。
  • 脚本与函数正确性

    • 确认脚本确实挂载在地板对象上,且脚本在Inspector面板中处于启用状态。
    • 检查OnTriggerEnter的函数签名:必须是private void OnTriggerEnter(Collider hit),注意大小写(比如不能写成onTriggerEnter),参数类型是Collider而非Collision(后者对应物理碰撞的OnCollisionEnter)。
  • 碰撞矩阵与层级设置

    • 打开Edit → Project Settings → Physics,查看碰撞矩阵:确保地板和子弹所在的层级之间,触发碰撞是允许的(对应交叉格子要勾选)。如果其中一方在忽略列表里,触发事件不会触发。
  • 预制体实例化后的属性检查

    • 如果子弹是通过代码实例化的,确认实例化后的子弹对象没有丢失Collider、Rigidbody组件,也没有被代码修改标签或Is Trigger属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 13:14:58