Skip to content

碰撞组件 Collider

YHH edited this page Aug 12, 2020 · 1 revision

Collider是继承于Component的抽象类,也是矩形/圆形/多边形碰撞组件的基类

属性介绍

shape

对撞机的基本形状, 是Box/Circle/Polygon的基类,用于碰撞检查。例如:在你选用例如BoxCollider组件时,shape就会固定为Box类型。

isTrigger

当该值为true,这个碰撞器则是一个触发器,它将不会引起碰撞(物体会穿过另一个物体) 且你的组件同时继承 es.ITriggerListener 并实现其中的onTriggerEnter(other, local)onTriggerExit(other, local)方法后会在物体穿过另一个物体或者离开另一个物体时触发该方法,如果该值为false则永远不会触发这两个方法。

class SampleComponent extends es.Component implements es.ITriggerListener {
  /**
   * 当碰撞器与触发碰撞器相交时调用。这是在触发碰撞器和触发碰撞器上调用的。
   * 移动必须由Mover/ProjectileMover方法处理,以使其自动工作。
   * @param other
   * @param local
   */
  public onTriggerEnter(other: es.Collider, local: es.Collider){
  }

  /**
   * 当另一个碰撞器离开触发碰撞器时调用
   * @param other
   * @param local
   */
  public onTriggerExit(other: es.Collider, local: es.Collider){
  }
}
class MainScene extends es.Scene {
  public async onStart(){
    let entity = this.createEntity("player");
    entity.addComponent(new BoxCollider());
    entity.addComponent(new Mover());
    entity.addComponent(new SampleComponent()).isTrigger = true;
  }
}

physicsLayer

在处理冲突时,physicsLayer可以用作过滤器。Flags类有帮助位掩码的方法

collidesWithLayers

碰撞器在使用移动器移动时应该碰撞的层, 默认为所有层

shouldColliderScaleAndRotateWithTransform

如果为true,碰撞器将根据附加的变换缩放和旋转

registeredPhysicsBounds

这个对撞机在物理系统注册时的边界。

absolutePosition

碰撞器的绝对位置。只读

rotation

封装变换。如果碰撞器没和实体一起旋转 则返回transform.rotation。只读

bounds

碰撞器的边界矩形。只读

localOffset

将localOffset添加到实体。获取碰撞器几何图形的最终位置。 允许向一个实体添加多个碰撞器并分别定位,还允许你设置缩放/旋转

方法介绍

setLocalOffset

将localOffset添加到实体。获取碰撞器的最终位置。 这允许您向一个实体添加多个碰撞器并分别定位它们。

setShouldColliderScaleAndRotateWithTransform

如果为true,碰撞器将根据附加的变换缩放和旋转

registerColliderWithPhysicsSystem

父实体会在不同的时间调用它(当添加到场景,启用,等等)

unregisterColliderWithPhysicsSystem

父实体会在不同的时候调用它(从场景中移除,禁用,等等)

clone

复制该碰撞器