如何在Flutter Flame中使用CameraComponent.setBounds()?

问题描述 投票:0回答:1

我有一个世界和一个玩家。我的相机跟随玩家。玩家无法走出我创建的世界边界,但相机可以看到世界边界后面的内容(黑屏)。

我尝试添加文档中提到的 CameraComponent.setBounds(...) 。 setBounds() 函数请求 Shape? 类型的边界。我必须在这里传递什么?在火焰更新之前,我在camera.followComponent中使用了“worldBounds: Rect.fromLTRB(0, 0, _background.size.x, _background.size.y)”,但它已被弃用

flutter camera bounds flame
1个回答
0
投票

这尚未在新相机系统中完全实现(请参阅https://github.com/flame-engine/flame/issues/2601)。

目前唯一的解决方法是计算比玩家可以移动的范围更小的边界,例如,如果您的世界基于 (0, 0):

import 'package:flame/experimental.dart'; // Gives you the Rectangle
...

class MyGame extends FlameGame {
  @override
  Future<void> onLoad() async {
    final halfViewportSize = camera.viewport.size / 2;
    final worldSize = 1500; // Size from the center in each direction.
    cameraComponent.setBounds(
      Rectangle.fromCenter(
        center: Vector2.zero(),
        size: Vector2.all(worldSize) - halfViewportSize,
      ),
    );
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.