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

Unity中OnTriggerEnter2D未触发检测,求修复方法

修复OnTriggerEnter2D不触发的问题

以下是针对你的场景的具体排查和修复方案:

核心触发条件回顾

Unity的2D触发事件(OnTriggerEnter2D)生效必须满足三个硬条件:

  1. 两个碰撞体中恰好有一个勾选了「Is Trigger」
  2. 两个物体中至少有一个挂载了Rigidbody2D组件,且该组件的Body Type不能是「Static」(选Dynamic或Kinematic都可以)
  3. 脚本必须挂载在触发事件的参与物体上(要么是鼠标跟随的空物体,要么是带硬币逻辑的物体)

具体修复步骤

  • 补充Rigidbody2D组件:给鼠标跟随空物体或硬币物体添加Rigidbody2D。如果是鼠标跟随的物体,建议将Body Type设为「Kinematic」(适配代码控制移动的场景),同时取消勾选「Gravity Scale」避免物理下落干扰;如果是硬币物体,设为「Dynamic」或「Kinematic」均可,不能设为Static。
  • 统一Is Trigger设置:确保两个物体中只有一个勾选「Is Trigger」,二选一即可:
    • 方案1:鼠标跟随物体的Collider不勾选Is Trigger,硬币物体的Collider勾选Is Trigger
    • 方案2:鼠标跟随物体的Collider勾选Is Trigger,硬币物体的Collider不勾选Is Trigger
  • 确认脚本挂载位置:如果代码是处理硬币的收集逻辑,必须把脚本挂载在硬币物体上;如果是检测鼠标物体的触发行为,就挂载在鼠标跟随的空物体上。
  • 检查Layer碰撞规则:打开「Edit > Project Settings > Physics2D」,查看「Layer Collision Matrix」,确保鼠标物体和硬币物体所在的Layer允许相互触发(对应格子需打勾)。
  • 验证碰撞范围重叠:在Scene视图中开启Gizmos,直观查看两个物体的Collider范围,确认鼠标移动时确实会和硬币的Collider产生重叠。

额外测试建议

可以在两个物体上分别添加测试代码,快速定位触发失效的一侧:
比如在鼠标跟随物体上添加:

void OnTriggerEnter2D(Collider2D other)
{
    Debug.Log("鼠标物体触发了:" + other.name);
}

保留硬币物体上的原有代码,通过日志判断哪一侧未检测到触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:20:28