SpriteComponent 的旋转点(锚点)

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

我正在使用 Flame 和 Flutter,并尝试添加一个绕其中心旋转的 SpriteComponent。我是初学者,对我来说太裸露了。

当我执行以下操作时它会起作用:

class Player extends SpriteComponent with HasGameRef<MyGame> {
  Player({required this.sprite}) : super();

  final Sprite sprite;
  late SpriteComponent player;

  @override
  FutureOr<void> onLoad() {
    player = SpriteComponent(
      sprite: sprite,
      position: Vector2(0, 0),
      size: Vector2(150, 80),
      anchor: Anchor.center,
    );
    debugMode = true;
    add(player);
    return super.onLoad();
  }

  @override
  void update(double dt) {
    angle += 0.01;
    super.update(dt);
  }
}

所以看起来是这样的:

但是当我想移动精灵一点并添加以下行时:

position: Vector2(200, 200),

现在它仍然围绕顶部的角旋转...我如何在自己的中心旋转精灵?

flutter dart flame
1个回答
0
投票

您的

SpriteComponent
组件内部有一个
Player
(这也是一个
SpriteComponent
),因为您在这两个组件上使用相同的精灵,所以我相当确定您只需要其中一个。

如果你删除内部的

player
你最终会得到这样的东西,这应该是你想要的:

class Player extends SpriteComponent with HasGameRef<MyGame> {
  Player({required this.sprite}) : super(
    position: Vector2(0, 0),
    size: Vector2(150, 80),
    anchor: Anchor.center,
  );

  @override
  Future<void> onLoad() {
    super.onLoad();
    debugMode = true;
  }

  @override
  void update(double dt) {
    super.update(dt);
    angle += 0.01;
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.