flame_forge2d BodyComponent 使用

83 阅读1分钟

BodyComponent 的使用一般实现两个方法

第一个方法 createBody 创建物体在二维世界的一些属性

@override
Body createBody() {
  //设置Body 大小 Body之间发生碰撞是以这个尺寸为准
  final shape = PolygonShape()..setAsBoxXY(100, 100);
  final fixtureDef = FixtureDef(
    shape,
    restitution: 0, 
    density: 0.1, //密度
    friction: 0.0, //摩擦
  );
  renderBody = true;
  final bodyDef = BodyDef(
      userData: this,
      angularDamping: 0,
      type: BodyType.dynamic,
      position: Vector2.zero()
  );
  return world.createBody(bodyDef)..createFixture(fixtureDef)
  ..setFixedRotation(true);
}

restitution

回弹系数。用于控制碰撞后的反弹效果。恢复系数的值在 0 到 1 之间。值为 0 表示完全没有反弹,碰撞后物体立即停止;值为 1 表示完全弹性碰撞,碰撞后物体以相同的速度反弹。如果想实现碰撞完全没有反弹,被撞物体跟撞击物体的restitution都需要设置成0.

setFixedRotation

决定发生碰撞的时候是否发生旋转。

angularDamping

指的是角阻尼。它用于控制物体旋转时角速度的衰减程度,值越大,物体旋转的速度衰减得越快。

第二个方法 onLoad

onLoad 跟Flame中使用 Component 的onload方法是一样的,用来加载展示的内容。