Cocos Creator V3.2 刚体和碰撞组件碰撞回调事件-初学者3篇

本文详细解析Unity3D中触发事件与碰撞事件的区别,涵盖触发器的概念、触发事件类型及其应用场景,以及碰撞事件的触发条件和可用事件。重点介绍了如何设置IsTrigger属性并配合使用相应的回调函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 首先要了解两个概念 : 触发事件(不产生物理碰撞效果),碰撞事件(有碰撞效果

    A: 触发事件 

        触发事件:触发事件由触发器生成(引入问题:什么是触发器?

        触发器:触发器是 Is Trigger 属性为 true 的碰撞组件。当发生碰撞时,触发器不会产生                            碰撞效果,所以触发器只用于碰撞检测。       

      如图所示:

 

触发事件

触发事件目前包括以下三种:

事件说明
onTriggerEnter触发开始
onTriggerStay触发保持
onTriggerExit触发结束

其中可产生触发事件的碰撞对为:

类型静态刚体运动学刚体动力学刚体
静态刚体
运动学刚体
动力学刚体

注意:前提是两者都必须带有碰撞组件,并且至少有一个是触发器类型。

如果想要下执行触发事件必须把碰撞组件的 Is Trigger 勾选上 (设置为True)也就是碰撞组件变成了触发器

测试代码如下

 ColliderStr = this.getComponent(BoxCollider);
       
  ColliderStr?.on('onTriggerEnter', this.onTrigger, this);
 onTrigger(event: ITriggerEvent) {
        console.log(event.type, event);
    }

 

B:碰撞事件 

只有碰撞组件才能产生碰撞事件,触发组件不能回调碰撞事件

当碰撞组件的Is Trigger 未勾选上 (设置为False)时才会调用碰撞回调事件

 

 

 ColliderStr = this.getComponent(BoxCollider);
        //1碰撞事件 
        ColliderStr?.on('onCollisionEnter', this.onICollision, this);

  onICollision(event: ICollisionEvent) {
        console.log(event.type, event);
    }

碰撞事件

碰撞事件根据碰撞数据生成,静态类型的刚体之间不会产生碰撞数据。

目前碰撞事件包括以下三种:

事件说明
onCollisionEnter碰撞开始
onCollisionStay碰撞保持
onCollisionExit碰撞结束

其中可产生碰撞事件的碰撞对为:

类型静态刚体运动学刚体动力学刚体
静态刚体
运动学刚体
动力学刚体

注意:前提是两者都必须带有碰撞组件,并且都必须是碰撞器类型。

### Cocos Creator 中触发器的使用方法 在 Cocos Creator 的物理引擎中,触发器是一种特殊的碰撞体类型,用于检测对象之间的进入、停留离开事件,而不会施加任何物理作用力。这种机制非常适合用来实现诸如区域检测、拾取物品等功能。 #### 创建触发器 要创建一个触发器,在场景编辑器中选中目标节点并为其添加 `Collider` 组件(例如 `Box Collider`, `Circle Collider`)。随后将该组件的 **Is Trigger** 属性设置为 `true`[^2]。这一步骤会告诉物理引擎此碰撞体仅作为触发器使用而不参与实际的物理计算。 #### 注册触发器回调函数 为了响应触发器事件,需要注册相应的回调函数。这些函数通常包括: - `onTriggerEnter(other)`:当另一个物体首次进入触发器范围时调用。 - `onTriggerStay(other)`:只要另一物体重叠于触发器范围内持续调用。 - `onTriggerExit(other)`:当另一物体完全移出触发器范围时调用。 以下是具体的代码示例展示如何定义上述三种类型的触发器逻辑: ```javascript cc.Class({ extends: cc.Component, properties: { // 可在此处声明所需属性 }, onTriggerEnter (other) { console.log('An object has entered the trigger area:', other); }, onTriggerStay (other) { console.log('The object is still inside the trigger zone:', other); }, onTriggerExit (other) { console.log('Object exited from the trigger region:', other); } }); ``` 以上脚本应附加到设置了触发器的节点上。每当有其他带有刚体的对象与之发生交互时,就会自动执行对应的回调操作[^5]。 #### 调试触发器 对于复杂的游戏项目来说,验证触发器的工作状态至关重要。可以利用 Cocos Creator 提供的一些内置调试选项来可视化所有的碰撞形状以及它们的状态变化过程[^4]。开启后可以在运行模式下直观看到哪些部分被标记成了触发区,并观察其动态表现是否符合预期设计。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值