使用 CameraComponent 时 Tappables 丢失
Tappables miss when using CameraComponent
我按照 Flame 网站上的文档创建了一个 Klondike 游戏骨架,现在正尝试将相同的想法应用于创建棋盘游戏。我喜欢使用 CameraComponent,因为它允许随着浏览器大小的变化轻松调整游戏区域的大小,但我发现当与 Tappable Components 混合使用时,点击事件往往会“错过”,或者与屏幕上可见的内容不一致.这是一个最小的例子:
import 'package:flame/components.dart';
import 'package:flame/experimental.dart';
import 'package:flame/game.dart';
import 'package:flame/input.dart';
import 'package:flutter/material.dart';
void main() {
final game = MyFlameGame();
runApp(GameWidget(game: game));
}
class MyFlameGame extends FlameGame with HasTappables {
@override
Future<void> onLoad() async {
final myComponent = MyComponent()
..size = Vector2(50, 50)
..position = Vector2(250, 250);
final world = World();
world.add(myComponent);
add(world);
final camera = CameraComponent(world: world)
..viewfinder.visibleGameSize = Vector2(1000, 1000)
..viewfinder.position = Vector2(500, 0)
..viewfinder.anchor = Anchor.topCenter;
add(camera);
}
}
class MyComponent extends PositionComponent with Tappable {
@override
bool get debugMode => true;
@override
bool onTapUp(TapUpInfo info) {
print('tap up');
return true;
}
@override
bool onTapDown(TapDownInfo info) {
print('tap down');
return true;
}
}
如果您调整 window 的大小并在框内单击,我希望看到控制台日志,但它们有时不会出现。有时我能够在黑色区域找到真正的 Tappable 位置,这将触发控制台消息。有没有办法配置 Tappable 组件以与通过 CameraComponent 视口可见的内容对齐?
这是 CameraComponent
中的已知错误,或者可能不是错误,只是尚未实现。这就是 CameraComponent
仍然被归类为 experimental
的原因之一。
这项工作仍在进行中,您可以通过关注 this issue.
获取最新信息
我按照 Flame 网站上的文档创建了一个 Klondike 游戏骨架,现在正尝试将相同的想法应用于创建棋盘游戏。我喜欢使用 CameraComponent,因为它允许随着浏览器大小的变化轻松调整游戏区域的大小,但我发现当与 Tappable Components 混合使用时,点击事件往往会“错过”,或者与屏幕上可见的内容不一致.这是一个最小的例子:
import 'package:flame/components.dart';
import 'package:flame/experimental.dart';
import 'package:flame/game.dart';
import 'package:flame/input.dart';
import 'package:flutter/material.dart';
void main() {
final game = MyFlameGame();
runApp(GameWidget(game: game));
}
class MyFlameGame extends FlameGame with HasTappables {
@override
Future<void> onLoad() async {
final myComponent = MyComponent()
..size = Vector2(50, 50)
..position = Vector2(250, 250);
final world = World();
world.add(myComponent);
add(world);
final camera = CameraComponent(world: world)
..viewfinder.visibleGameSize = Vector2(1000, 1000)
..viewfinder.position = Vector2(500, 0)
..viewfinder.anchor = Anchor.topCenter;
add(camera);
}
}
class MyComponent extends PositionComponent with Tappable {
@override
bool get debugMode => true;
@override
bool onTapUp(TapUpInfo info) {
print('tap up');
return true;
}
@override
bool onTapDown(TapDownInfo info) {
print('tap down');
return true;
}
}
如果您调整 window 的大小并在框内单击,我希望看到控制台日志,但它们有时不会出现。有时我能够在黑色区域找到真正的 Tappable 位置,这将触发控制台消息。有没有办法配置 Tappable 组件以与通过 CameraComponent 视口可见的内容对齐?
这是 CameraComponent
中的已知错误,或者可能不是错误,只是尚未实现。这就是 CameraComponent
仍然被归类为 experimental
的原因之一。
这项工作仍在进行中,您可以通过关注 this issue.
获取最新信息