Flutter中如何固定资源方向?

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

嗨,我正在尝试使用 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)中,我的资产级别的方向与我预期的不同(下图)

Emulator dp 393x808

Tiled level design 384x800

有人解决这个问题吗?抱歉,我是 Flutter 新手,我将其作为一种爱好。感谢您的帮助!

我尝试更改代码和地图中的分辨率,但没有帮助。

android flutter mobile game-development tiled
1个回答
0
投票

我对火焰不熟悉,但看起来你将设备设置为横向

  Flame.device.setLandscape();

如果删除它会发生什么?默认情况下应为纵向。

© www.soinside.com 2019 - 2024. All rights reserved.