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

Unity碰撞未触发求助:与敌人碰撞无控制台提示,测试NPC正常

Unity碰撞触发问题排查

问题描述

在Unity开发中,与敌人碰撞时本该触发控制台日志,但无任何反应且无错误提示。测试NPC可正常触发碰撞逻辑,唯独敌人不行。

相关代码片段

基类脚本中的虚方法

protected virtual void OnCollide(Collider2D coll)
{
    Debug.Log("OnCollide was not implemented in" + this.name);
}

子类中重写的方法

protected override void OnCollide(Collider2D coll)
{
    if (coll.tag == "Fighter")
    {
        if (coll.name != "Player")
        {
            Debug.Log(coll.name);
        }
    }
}

private void Swing()
{
    Debug.Log("Swing");
}

排查要点

  • 检查敌人对象的标签是否为Fighter,注意标签大小写敏感,避免拼写错误
  • 确认敌人的Collider2D组件是否误勾选了Is Trigger:如果基类的碰撞逻辑依赖非触发碰撞(如OnCollisionEnter2D),而敌人设为Trigger会导致不触发OnCollide
  • 敌人对象必须带有Rigidbody2D组件(静态碰撞体除外,动态交互场景下必须添加),Unity 2D碰撞要求至少一方拥有Rigidbody2D才能触发碰撞回调
  • 验证子类脚本是否正确挂载到了负责触发碰撞的对象上(比如玩家武器、碰撞体所在对象)
  • 检查基类中是否在正确的碰撞回调(如OnCollisionEnter2D/OnTriggerEnter2D)里调用了OnCollide虚方法,若基类未触发该方法,子类重写也不会生效
  • 确认敌人对象的名称确实不是Player,避免名称拼写错误导致条件判断不通过

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:19:21