You need to enable JavaScript to run this app. Unity中移动rigidbody立方体与静态空对象的碰撞检测实现方法
优惠活动
大模型
产品
解决方案
定价
更多

Unity中移动rigidbody立方体与静态空对象的碰撞检测实现方法

Unity碰撞检测方案解答

方法选择判断标准

两个方法的适用场景完全明确,直接根据你的需求选即可:

  • 需要物理碰撞效果(移动的立方体撞上静态物体后被阻挡、产生物理反馈,不会穿模):使用OnCollisionEnter,无需修改Collider的Is Trigger属性
  • 仅需要碰撞事件通知,不需要物理阻挡(移动的立方体可以穿过静态物体,只需要触发对应逻辑):使用OnTriggerEnter,需要给任意一方的Collider勾选Is Trigger属性

你的场景满足Unity碰撞触发的前置要求:两个物体都带有Collider,且其中一方(移动立方体)挂载了Rigidbody组件,两种方法都可以正常触发,只需要按需求选择即可。

具体调用方法

OnCollisionEnter 用法

脚本挂载到带Rigidbody的移动立方体上即可,示例代码如下:

using UnityEngine;

public class CollisionCheck : MonoBehaviour
{
    // 碰撞开始时触发1次
    private void OnCollisionEnter(Collision collisionInfo)
    {
        // 建议给静态对象提前设置标签「StaticBlock」,方便判断碰撞目标
        if (collisionInfo.gameObject.CompareTag("StaticBlock"))
        {
            Debug.Log("检测到与静态立方体碰撞");
            // 这里写你需要执行的逻辑
        }
    }

    // 碰撞持续过程中每帧触发1次
    private void OnCollisionStay(Collision collisionInfo)
    {
        if (collisionInfo.gameObject.CompareTag("StaticBlock"))
        {
            // 持续碰撞逻辑
        }
    }

    // 碰撞结束时触发1次
    private void OnCollisionExit(Collision collisionInfo)
    {
        if (collisionInfo.gameObject.CompareTag("StaticBlock"))
        {
            // 碰撞结束逻辑
        }
    }
}

注意:不要给任何一方的Collider勾选Is Trigger,移动立方体的Rigidbody不要勾选Is Kinematic。

OnTriggerEnter 用法

首先给静态对象的Box Collider勾选Is Trigger属性,脚本同样挂载到移动立方体上,示例代码如下:

using UnityEngine;

public class TriggerCheck : MonoBehaviour
{
    // 进入触发器范围时触发1次
    private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("StaticBlock"))
        {
            Debug.Log("进入静态立方体触发范围");
            // 触发逻辑
        }
    }

    // 在触发器范围内每帧触发1次
    private void OnTriggerStay(Collider other)
    {
        if (other.CompareTag("StaticBlock"))
        {
            // 持续触发逻辑
        }
    }

    // 离开触发器范围时触发1次
    private void OnTriggerExit(Collider other)
    {
        if (other.CompareTag("StaticBlock"))
        {
            // 触发结束逻辑
        }
    }
}

注意:如果勾选了静态对象的Is Trigger,移动立方体的Rigidbody依然不能勾选Is Kinematic,否则无法触发事件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 15:24:03