1

我正在使用 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);,很明显视差被初始化为屏幕大小,因为随着相机的移动,视差的边缘在黑色的游戏世界背景下变得可见。我试过改变和的大小ParallaxComponent无济于事Parallax

更改画布大小也没有多大作用onGameResize(Vector2(camera.canvasSize.x, 5000));

有没有一种标准的方法来设置一个组件填充世界大小?源代码谈到了世界大小,但我没有看到任何控制它的方法。

4

1 回答 1

1

ParallaxComponent是一个PositionComponent生活在相机默认查看的世界中的一个。如果您希望 aPositionComponent与视口(或GameWidget)相关,则必须将其更改positionTypePositionType.viewport.

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

// create background parallax
parallax = ParallaxComponent(
  parallax: Parallax(
    await Future.wait(layers),
    baseVelocity: Vector2(20, 0),
  ),
)..positionType = PositionType.viewport;
于 2021-12-12T00:16:49.913 回答