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方法是一样的,用来加载展示的内容。