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

Unity中调用OnCollisionEnter方法时,应传入何种正确参数?

Unity中OnCollisionEnter的参数问题及正确用法

核心问题说明

OnCollisionEnter是Unity内置的碰撞回调方法,不需要你手动调用。当两个带Collider的物体发生碰撞时,Unity会自动触发这个方法,并传入正确的Collision类型参数。你在Update里手动传字符串"Here"调用是错误的,因为方法定义要求的是Collision类型参数,不是字符串。

正确用法

  1. 让Unity自动触发回调
    只需要在脚本中实现OnCollisionEnter方法,满足碰撞条件时Unity会自动调用:

    private void OnCollisionEnter(Collision collision)
    {
        // 在这里处理碰撞逻辑,比如获取碰撞对象、碰撞点等
        Debug.Log("碰撞到了: " + collision.gameObject.name);
    }
    
  2. 若需复用碰撞逻辑
    如果要在其他地方复用碰撞处理代码,把逻辑抽成独立方法,不要直接调用OnCollisionEnter:

    private void OnCollisionEnter(Collision collision)
    {
        ProcessCollision(collision);
    }
    
    private void ProcessCollision(Collision collision)
    {
        // 你的碰撞处理逻辑
    }
    
    private void Update()
    {
        // 如果确实需要手动触发,要传入有效的Collision实例(一般很少这么做)
        // ProcessCollision(yourValidCollisionObject);
    }
    

触发OnCollisionEnter的必要条件

  • 两个碰撞物体都必须带有Collider组件
  • 其中至少一个物体带有Rigidbody组件(若Rigidbody设为Kinematic,另一个物体必须有非Kinematic的Rigidbody)
  • Collider的IsTrigger属性必须为false(若设为true,会触发OnTriggerEnter而非OnCollisionEnter)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:20:29