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

Unity中OnTriggerEnter事件未触发问题求助

解决Unity OnTriggerEnter未触发的问题

嘿,我来帮你排查为什么"Boost here!"从来没打印出来的问题!结合你提供的代码和物体信息,咱们一步步来:

首先,明确Trigger事件触发的必要条件

Unity的OnTriggerEnter要生效,必须同时满足这几个核心要求:

  • 两个参与碰撞的物体都要有Collider组件
  • 其中至少一个Collider勾选了「Is Trigger」
  • 其中至少一个物体带有非运动学(Kinematic未勾选)的Rigidbody组件

结合你的物体信息逐一排查

从你提供的两张物体截图来看:

1. 检查Trigger设置

带"Boost"标签的目标物体:它的Collider有没有勾选「Is Trigger」?如果没勾,触发事件根本不会启动,这是最常见的触发失败原因!
(如果你的移动物体Collider勾了「Is Trigger」也可以,但通常我们会把触发型道具(比如Boost)设为Trigger)

2. 检查Rigidbody组件

你的移动物体看起来没有Rigidbody组件?这会直接导致触发失效——Unity不会把没有Rigidbody的物体当成动态碰撞体,自然不会触发Trigger事件。给移动物体添加一个Rigidbody组件,并且不要勾选「Is Kinematic」(如果你的移动物体是通过代码控制移动,这个设置完全没问题)。

3. 代码里的小优化(避坑用)

你现在用other.gameObject.tag == "Boost"判断标签,换成other.CompareTag("Boost")会更靠谱:

  • 性能更优
  • 如果标签拼写错误或者不存在,不会抛出空引用错误,只会返回false,更容易排查问题

修正后的代码示例

private void OnTriggerEnter(Collider other) {
    if (other.CompareTag("Boost")) {
        print("Boost here!");
        transform.Translate(Vector3.forward * Time.deltaTime * speed);
    }
}

额外测试小技巧

  • 在Scene视图里给两个物体的Collider设置不同的颜色,直观观察碰撞体范围是否真的会重叠
  • 暂时把移动物体的speed调小,慢速移动观察碰撞体接触时的触发情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:16:43