物理事件

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

    碰撞器是 Is Trigger 属性为 false 的碰撞组件。当发生碰撞时,碰撞器会产生碰撞效果,所以碰撞器既可以进行碰撞检测,又可以产生物理效果。

    两者的区别如下:

    • 触发器不会与其它触发器或者碰撞器做更精细的检测。

    触发事件和碰撞事件

    触发事件和碰撞事件两者的区别在于:

    1. 触发事件由触发器生成,碰撞事件根据碰撞数据生成。
    2. 触发事件可以由触发器和另一个触发器/碰撞器产生。
    3. 碰撞事件需要由两个碰撞器产生,并且至少有一个是动力学刚体。

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

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

    监听触发事件

    需要通过注册事件来添加相应的回调:

    1. 通过this.getComponent(Collider)获取到 Collider
    2. 通过 Collideron 或者 once 方法注册相应事件的回调

    代码示例:

    碰撞事件

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

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

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

    监听碰撞事件

    监听碰撞事件需要通过注册事件来添加相应的回调:

    1. 通过 this.getComponent(Collider) 获取到 Collider
    2. 通过 Collideron 或者 once 方法注册相应事件的回调

    代码示例:

    1. let Collider = this.getComponent(Collider);
    2. Collider.on('onCollisionStay', this.onCollision, this);
    3. }
    4. private onCollision (event: ICollisionEvent) {
    5. }

    注意:目前碰撞事件以物理元素为单位,所有该元素上的碰撞器组件都会接收到碰撞事件。