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

Unity移动端2D项目碰撞检测代码不触发控制台无输出问题求助

Unity 2D项目碰撞检测不生效原因及修复方案

最高概率核心问题

你当前使用的OnCollisionEnter是Unity 3D物理系统的碰撞回调函数,不适用于2D项目,2D物理体系的碰撞回调对应为OnCollisionEnter2D,参数类型应为Collision2D。

其他可能导致失效的原因

  • 碰撞体组件类型不匹配:2D项目中所有参与碰撞的对象必须挂载2D类型碰撞体(如BoxCollider2D、CircleCollider2D),使用3D碰撞体不会触发2D物理碰撞事件
  • 缺少2D刚体组件:参与碰撞的两个对象中,至少有一个需要挂载Rigidbody2D组件,否则Unity 2D物理引擎不会派发碰撞事件;如果不需要重力效果可将Rigidbody2D的Gravity Scale属性设为0
  • 标签匹配错误:Unity标签大小写敏感,需确认碰撞目标对象的标签严格等于Finish,不存在拼写、大小写偏差
  • 碰撞体开启了触发属性:如果任意一方碰撞体勾选了Is Trigger选项,将不会触发碰撞回调,只会触发触发回调,此时要么关闭Is Trigger,要么改用OnTriggerEnter2D函数
  • 层碰撞被禁用:检查Unity编辑器编辑>项目设置>物理2D>层级碰撞矩阵中,玩家和Finish对象所在层级的碰撞权限是否开启
  • 组件未激活:确认玩家对象和挂载的PlayerCollision脚本都处于启用状态(组件前的勾选框为选中状态)

修正后的2D碰撞检测代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerCollision : MonoBehaviour
{
    void Start()
    {
        
    }

    void Update()
    {
        
    }

    void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.collider.tag == "Finish")
        {
            Debug.Log("Level Finished");
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:48:03