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