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

Unity中OnCollisionEnter碰撞回调未触发问题求助

Unity碰撞检测OnCollisionEnter不触发故障排查

问题描述

  • 实现对象碰撞检测逻辑时,OnCollisionEnter回调始终无法触发
  • 参与碰撞的两个对象均已挂载Rigidbody、Box Collider组件,两个碰撞体的isTrigger属性均未勾选
  • 初步怀疑故障和代码中AddForce方法调用有关,无法定位具体根因

关联实现代码

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

public class Cuplat2 : MonoBehaviour
{
    public Vector3 Target = new Vector3();
    private Rigidbody rb;
    public float thrust;

    private void Start()
    {
        rb = GetComponent<Rigidbody>();
    }
   
    void FixedUpdate()
    {
        Vector3 NewPosition = transform.position + Target;
        Vector3 Position = transform.position;

        if (transform.position.x < Target.x)
        {
            rb.AddForce(transform.position * thrust);
        }
        else
        {
            //rb.isKinematic = true;
        }
    }

    public void OnCollisionEnter(Collision collision)
    {
        Debug.Log("stop");
        if (collision.gameObject.name == "Cupla T2") 
        {
            Debug.Log("stop");
        }
    }
}

配置参考

碰撞组件配置参考

故障排查方向

  • 加力逻辑错误:当前代码rb.AddForce(transform.position * thrust)施加的力方向是世界原点指向物体当前位置,并非朝向Target点的方向,大概率物体根本没有向另一个碰撞体移动,两者未产生实际碰撞接触自然不会触发回调。正确朝向目标点加力的写法应该取目标方向向量:rb.AddForce((Target - transform.position).normalized * thrust);
  • Rigidbody参数校验:碰撞触发要求两个碰撞对象中至少有一个Rigidbody关闭isKinematic属性,如果你后续取消注释代码里的rb.isKinematic = true,且另一个碰撞体也开启运动学模式,碰撞事件将完全不触发。如果物体移动速度较快,把Rigidbody的Collision Detection属性从Discrete改成Continuous,避免高速穿透导致碰撞不触发。
  • 基础配置校验:
    • 确认Cuplat2脚本直接挂载在带碰撞体、Rigidbody的活动对象上,不要挂载到空物体或者未激活的子节点上
    • 打开Edit > Project Settings > Physics面板,检查两个碰撞对象所在的层,在层碰撞矩阵中是否勾选了层间碰撞许可
    • 检查两个Box Collider的Size、Center参数配置,确认碰撞体尺寸和模型匹配,没有因为碰撞体过小导致接触判定失效
  • 函数签名校验:OnCollisionEnter是Unity生命周期反射调用的方法,要保证函数名拼写完全正确、参数类型为Collision,不要误写成参数是Collider类型的触发器回调,不要给方法加静态修饰符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:45:47