0

长话短说。我在扩展小部件中使用火焰引擎。现在我正在加载六个背景以及我在 Game 中的 SpriteComponent 类,它使用 HasTappableComponents 扩展了 FlameGame。现在我想给这个 SpriteComponent 添加一些交互,比如在没有点击时对点击或切换动画的反应。我不明白为什么它甚至不打印“点击”...

class FoxCharacter extends SpriteComponent with Tappable, HasGameRef  {

  String working = "like a charm";

  late SpriteAnimation animation;
  late SpriteAnimationComponent animationComponent2;

  Future<void> onLoad() async {
    super.onLoad();

    animation = await gameRef.loadSpriteAnimation(
      'fox.png',
      SpriteAnimationData.sequenced(
        amount: 8,
        textureSize: Vector2(64.0, 59.0),
        stepTime: 0.15,
      ),
    );

    animationComponent2 = SpriteAnimationComponent(
      animation: animation,
      size: Vector2(200.0, 200.0),
      position:Vector2(gameRef.size.x / 2 - 50, gameRef.size.y - 215),

    );

    add(animationComponent2);
    print(working);
  }

  @override
  bool onTapDown(TapDownInfo event) {
    print("tap down");
    return true;
  }

}

我试图将 final 更改为 late 和其他一些枯燥的想法,但没有结果。如何向此 FoxCharacter 添加交互?这可能是它不能在 SpriteComponent 中使用而只能在 PositionComponent 中使用吗?

4

1 回答 1

1

这是因为您的SpriteComponent(FoxCharacter) 没有大小或命中框,所以事件系统不知道如何检查是否应该传递事件。它确实有一个孩子 (animationComponent2),这是您可以在屏幕上看到的。

在我看来,您想要使用SpriteAnimationGroupComponent并设置该组件的位置和大小,然后添加您想要在该组件中交换的所有不同动画。

您当然可以设置相同的sizeandpositionSpriteComponent不是将它们传递给animationComponent2,但我认为在完成该部分后您会遇到其他问题。

您可以在此处查看文档SpriteAnimationGroupComponent

于 2021-11-03T22:31:18.523 回答