• 物理事件
    • 触发器和碰撞器
    • 触发事件和碰撞事件
      • 触发事件
      • 碰撞事件

    物理事件

    Cocos Creator 3D 的物理事件有触发事件和碰撞事件,分别由触发器和碰撞器产生。

    触发器和碰撞器

    当碰撞时,触发器不会产生物理行为,而碰撞器会产生物理行为,所以触发器是只进行碰撞检测的 Collider,而碰撞器是既进行碰撞检测,又进行物理模拟的 Collider。

    两者的区别

    • 触发器不会与其它触发器或者碰撞器做更精细的检测。
    • 碰撞器与碰撞器会做更精细的检测,并会提供因碰撞产生的一些额外的数据,如碰撞点、法线等。注:设置一个 Collider 组件为触发器,可以通过设置 Collider 组件的 isTrigger 属性

    触发事件和碰撞事件

    触发事件

    Cocos Creator 3D 中的触发事件由触发器生成,目前分为三种 onTriggerEnter、onTriggerStay、onTriggerExit,分别代表着触发开始,触发保持,触发结束。

    监听触发事件,可以通过注册事件的方式来添加触发后的回调,以下步骤可以完成触发事件的监听:

    • 通过 this.getComponent(ColliderComponent) 获取到 ColliderComponent
    • 通过 ColliderComponenton 或者 once 方法注册相应事件的回调代码示例:
    1. public start () {
    2. let Collider = this.getComponent(ColliderComponent);
    3. Collider.on('onTriggerStay', this.onTrigger, this);
    4. }
    5. private onTrigger (event: ITriggerEvent) {
    6. console.log(event.type, event);
    7. }

    碰撞事件

    Cocos Creator 3D 中的碰撞事件由碰撞器生成,目前分为三种 onCollisionEnter、onCollisionStay、onCollisionExit,分别代表着碰撞开始,碰撞保持,碰撞结束。

    监听碰撞事件,可以通过注册事件的方式来添加碰撞后的回调,以下步骤可以完成碰撞事件的监听:

    • 通过 this.getComponent(ColliderComponent) 获取到 ColliderComponent
    • 通过 ColliderComponenton 或者 once 方法注册相应事件的回调代码示例:
    1. public start () {
    2. let Collider = this.getComponent(ColliderComponent);
    3. Collider.on('onCollisionStay', this.onCollision, this);
    4. }
    5. private onCollision (event: ICollisionEvent) {
    6. console.log(event.type, event);
    7. }

    注:ColliderComponent 是所有碰撞组件的父类

    两者的区别

    • 触发事件由触发器生成,碰撞事件由碰撞器生成。
    • 触发事件可以由一个触发器和另一个触发器或者另一个碰撞器产生,而碰撞事件需要由两个碰撞器产生。

    继续前往 分组和掩码 说明文档。