嗨,我正在尝试使用 Flame 和 Tiled 在 Flutter 中做一个简单的游戏。下面是我的代码:
main.dart
import 'package:demo/dungeons_tale.dart';
import 'package:flame/flame.dart';
import 'package:flame/game.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
Flame.device.fullScreen();
Flame.device.setLandscape();
DungeonsTale game = DungeonsTale();
runApp(GameWidget(game: kDebugMode ? DungeonsTale() : game),
);
}
level.dart
import 'dart:async';
import 'package:flame/components.dart';
import 'package:flame_tiled/flame_tiled.dart';
class Level extends World{
late TiledComponent level;
@override
FutureOr<void> onLoad() async{
level = await TiledComponent.load('Level-01v3.tmx', Vector2.all(16));
add(level);
return super.onLoad();
}
}
和 dungeon_tale.dart
import 'dart:async';
import 'dart:ui';
import 'package:demo/levels/level.dart';
import 'package:flame/camera.dart';
import 'package:flame/components.dart';
import 'package:flame/game.dart';
class DungeonsTale extends FlameGame{
@override
Color backgroundColor() => const Color(-12441547);
late final CameraComponent cam;
final world = Level();
@override
FutureOr<void> onLoad(){
cam= CameraComponent.withFixedResolution(world: world, width: 380, height: 800);
cam.viewfinder.anchor = Anchor.topLeft;
addAll([cam, world]);
return super.onLoad();
}
}
一切正常并正在运行,但在模拟器(Pixel_3a_API_34_extension_level_7_x86_64)中,我的资产级别的方向与我预期的不同(下图)
有人解决这个问题吗?抱歉,我是 Flutter 新手,我将其作为一种爱好。感谢您的帮助!
我尝试更改代码和地图中的分辨率,但没有帮助。
我对火焰不熟悉,但看起来你将设备设置为横向
Flame.device.setLandscape();
如果删除它会发生什么?默认情况下应为纵向。