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

Unity 3D碰撞检测无响应问题求助

Unity碰撞检测OnCollisionEnter无法触发的排查与解决

以下是针对问题的具体排查方向和解决方案:

  • 碰撞体配置检查

    • 确保Player对象下的胶囊体拥有启用的Collider组件(如CapsuleCollider),且未勾选Is Trigger——OnCollisionEnter仅对非Trigger碰撞体生效,若勾选则需改用OnTriggerEnter。
    • 熔岩对象同样需要启用的Collider组件,且Is Trigger处于未勾选状态。
  • Rigidbody设置验证

    • 确认Rigidbody组件挂载在Player的根对象(空对象)上,且未勾选Is Kinematic——运动学刚体不会响应物理碰撞,除非通过脚本手动控制移动。若Rigidbody挂在子物体,可能导致碰撞事件传递异常,建议统一挂载到根对象。
  • 对象匹配逻辑优化

    • 代码中通过gameObject.name判断容易因大小写、空格等拼写问题失效,建议改用Tag系统:给熔岩对象添加名为"Lava"的Tag,修改代码如下:
      using UnityEngine;
      
      public class Die : MonoBehaviour
      {
          void OnCollisionEnter(Collision col) {
              if(col.gameObject.CompareTag("Lava")) {
                  Debug.Log("Death");
              }
          }
      }
      
  • 脚本与对象状态确认

    • 检查Die脚本所在的Player对象及脚本自身均处于启用状态(Inspector面板中对应组件的勾选框为激活状态)。子物体的碰撞事件会正常传递到父对象的脚本,无需额外设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 00:05:55