スプライトウィジェット

2023-06-23

SpriteWidget

FlameGame の外で Flame のスプライトを使いたいことがあります。 例えば UI を普通の Flutter で作っていて、その中でキャラを表示したい場合などです。

SpriteWidgetを使えば、スプライトを Widget として配置できます。

ちなみに、Flutter 製のゲームフレームワークの 1 つ SpriteWidget とは関係ありません。

これも Flame とは関係ない話ですが、Flame を使ってないアプリでもスプライト画像から Wiget を作りたくなることがあるので、そのためのSpriteというパッケージを開発して公開しています。スプライトを表示するだけの軽量ライブラリです。

公式ドキュメント https://docs.flame-engine.org/latest/flame/other/widgets.html#spritewidget
公式ドキュメント https://docs.flame-engine.org/latest/flame/other/widgets.html#spriteanimationwidget
APIリファレンス https://pub.dev/documentation/flame/latest/widgets/SpriteWidget-class.html
APIリファレンス https://pub.dev/documentation/flame/latest/widgets/SpriteAnimationWidget-class.html

動かす

今回は FlameGame は使わず普通の Widget です。

静止画像の場合はこのように書きます。

          SizedBox(
            height: 64,
            width: 64,
            child: SpriteWidget.asset(path: 'asteroid.png'),
          ),

アニメーションの場合はこうです。

          SizedBox(
            height: 64,
            width: 64,
            child: SpriteAnimationWidget.asset(
              path: 'explosion.png',
              data: SpriteAnimationData.sequenced(
                textureSize: Vector2.all(32),
                amount: 6,
                stepTime: 0.2,
              ),
            ),
          ),

SizedBoxで大きさを指定している以外は、どちらもスプライトアニメーションと同様の使い方です。

これで Flutter の UI の中に Flame のスプライトを埋め込むことができました。

© 2023 tnantoka