2023-05-03
ParticleSystemComponent
を使うといろいろなパーティクルを表示することができます。
画像を使うSpriteParticle
や円を使うCircleParticle
などがあります。
公式サンプルを見るとどんな種類があるかわかると思います。
赤い四角をランダムに散らすパーティクルを表示してみます。
事前準備としてassets/images/
にparticle.png
という画像を入れておきます。
この画像をSpriteParticle
に設定してParticleSystemComponent
を作成します。
ここでは 32 個のランダムな速度のパーティクルを生成しています。
import 'dart:math';
import 'package:flame/components.dart';
import 'package:flame/events.dart';
import 'package:flame/game.dart';
import 'package:flame/particles.dart';
class ParticleGame extends FlameGame with TapCallbacks {
final _random = Random();
@override
void onTapDown(TapDownEvent event) async {
super.onTapDown(event);
final sprite = await Sprite.load('particle.png');
add(
ParticleSystemComponent(
position: event.localPosition,
particle: Particle.generate(
count: 32,
generator: (i) {
return AcceleratedParticle(
speed: _randomSpeed(),
child: SpriteParticle(
sprite: sprite,
),
);
},
),
),
);
}
Vector2 _randomSpeed() {
return Vector2(
_random.nextDouble() * 2 - 1,
_random.nextDouble() * 2 - 1,
) *
_random.nextInt(96).toDouble();
}
}
これでタップした箇所にパーティクルが表示されます。
© 2023 tnantoka