2023-05-13
ゲームにScreenHitbox
を追加すると、画面の周囲に当たり判定を追加できます。
たとえば壁に当たったら消すなどの処理を実装するのに便利です。
公式ドキュメント https://docs.flame-engine.org/latest/flame/collision_detection.html#screenhitboxゲームのonLoad
でScreenHitbox
を設定します。
@override
Future<void> onLoad() async {
super.onLoad();
await add(ScreenHitbox());
}
タップしたらランダムに動くボールを追加します。
@override
void onTapDown(TapDownEvent event) async {
super.onTapDown(event);
add(
Ball(
position: event.localPosition,
vx: _random.nextDouble() * 200 - 100,
vy: _random.nextDouble() * 200 - 100,
),
);
}
Ball
ではonCollision
でScreenHitbox
に当たったら止まって色を変えます。
class Ball extends CircleComponent with CollisionCallbacks {
Ball({super.position, required this.vx, required this.vy})
: super(radius: 10);
double vx;
double vy;
@override
Future<void> onLoad() async {
super.onLoad();
add(CircleHitbox());
}
@override
void update(double dt) {
super.update(dt);
position += Vector2(vx, vy) * dt;
}
@override
void onCollision(Set<Vector2> intersectionPoints, PositionComponent other) {
super.onCollision(intersectionPoints, other);
if (other is ScreenHitbox) {
paint = BasicPalette.gray.paint();
vx = 0;
vy = 0;
}
}
}
このように画面の周囲に当たり判定を追加できます。
© 2023 tnantoka