import 'package:flame/components.dart'; import 'package:flame/palette.dart'; import 'package:flame_forge2d/flame_forge2d.dart'; import 'package:flame_forge2d/forge2d_game.dart'; import 'package:forge2d/forge2d.dart'; import 'balls.dart'; import 'boundaries.dart'; class TappableSample extends Forge2DGame with HasTappables { TappableSample() : super(zoom: 20, gravity: Vector2(0, -10.0)); @override Future onLoad() async { await super.onLoad(); final boundaries = createBoundaries(this); boundaries.forEach(add); final center = screenToWorld(camera.viewport.effectiveSize / 2); add(TappableBall(center)); } } class TappableBall extends Ball with Tappable { TappableBall(Vector2 position) : super(position) { originalPaint = BasicPalette.white.paint(); paint = originalPaint; } @override bool onTapDown(_) { body.applyLinearImpulse(Vector2.random() * 1000); paint = randomPaint(); return false; } }