所以我正在尝试学习Flame,并且存在向
World
添加组件以及直接向FlameGame
添加组件的概念。我有点明白 world
以某种方式与 camera
一起工作。但主题对我来说仍然不清楚。所以这是我理解这一点的第一步。我已经阅读了docs,但并没有真正理解太多。如果有人能花时间解释世界、相机的概念,以及将孩子添加到 world
与将它们添加到 FlameGame
有何不同,我将非常感激。谢谢你。
import 'dart:async';
import 'package:flame/components.dart';
import 'package:flame/game.dart';
import 'components/components.dart';
import 'config.dart';
class BrickBreaker extends FlameGame {
BrickBreaker()
: super(
camera: CameraComponent.withFixedResolution(
width: gameWidth,
height: gameHeight,
),
);
double get width => size.x;
double get height => size.y;
@override
FutureOr<void> onLoad() async {
super.onLoad();
camera.viewfinder.anchor = Anchor.topLeft;
// adding to world, but why not add directly to the current component?
// add(PlayArea())
world.add(PlayArea());
}
}
不同之处在于相机正在看着
World
,因此如果您在相机周围移动 (viewfinder
),您将在世界中移动,但如果您在相机周围移动并添加了您的FlameGame
的组件将是静态的。
如果您不确切知道自己在做什么,我建议不要向
FlameGame
添加任何组件。如果您想要像 HUD 这样的静态组件,那么您需要使用 viewport
将它们添加到 camera.viewport.add(...)
,如果您想要世界背后的静态组件,则使用 backdrop
将它们添加到 camera.backdrop.add(...)
。