【问题标题】:Changing world size in flame with parallax用视差改变世界大小
【发布时间】:2022-01-16 01:07:15
【问题描述】:

我正在使用 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 的大小,但无济于事。

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

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

【问题讨论】:

    标签: flutter viewport flame


    【解决方案1】:

    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;
    

    【讨论】:

    • 奇怪,默认情况下它没有跟随相机。但是,当我将其设置为 PositionType.widget 时,它会跟随相机。职位类型是我所缺少的,谢谢。
    • 对不起,我写的不清楚,现在更新文本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    相关资源
    最近更新 更多