用视差改变火焰中的世界大小

Changing world size in flame with parallax

我正在使用 Flame 的第 1 版,并添加了效果很好的视差背景。

// load background layers
final layers = _layersMeta.entries.map(
      (e) => loadParallaxLayer(
    ParallaxImageData(e.key),
    velocityMultiplier: Vector2(e.value.toDouble(), 1.0),
        alignment: Alignment.center,
        fill: LayerFill.none ,
      ),
);

// create background parallax
parallax = ParallaxComponent(
  parallax: Parallax(
    await Future.wait(layers),
    baseVelocity: Vector2(20, 0),
  ),
);

add(parallax);

一旦我将相机设置为跟随 Sprite camera.followVector2(player.position); 那么很明显,视差被初始化为屏幕的大小,因为随着相机的移动,黑色游戏的视差边缘变得可见世界背景。我试过更改 ParallaxComponentParallax 的大小但无济于事。

改变 canvas 大小也没有太大作用 onGameResize(Vector2(camera.canvasSize.x, 5000));

是否有标准的方法来设置组件填充世界大小? source code 谈到了世界的大小,但我没有看到任何控制它的方法。

ParallaxComponent 是一个 PositionComponent,它生活在相机默认查看的世界中。如果您希望 PositionComponent 相对于视口(或 GameWidget),您必须将其 positionType 更改为 PositionType.viewport

因此在这种情况下,您的 ParallaxComponent 的初始化可能如下所示,以使其忽略相机:

// create background parallax
parallax = ParallaxComponent(
  parallax: Parallax(
    await Future.wait(layers),
    baseVelocity: Vector2(20, 0),
  ),
)..positionType = PositionType.viewport;