From 70f2af6ff01bdde33d961c7de32f8453b6fe6b1c Mon Sep 17 00:00:00 2001 From: RuiAlonso Date: Thu, 10 Mar 2022 20:17:03 +0100 Subject: [PATCH] feat: added maskbits to ball for collisions --- lib/game/components/ball.dart | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/game/components/ball.dart b/lib/game/components/ball.dart index 2d9dddf0..533dfd42 100644 --- a/lib/game/components/ball.dart +++ b/lib/game/components/ball.dart @@ -7,12 +7,15 @@ class Ball extends PositionBodyComponent with BlocComponent { Ball({ required Vector2 position, + int? maskBits, }) : _position = position, + _maskBits = maskBits ?? Filter().maskBits, super(size: ballSize); static final ballSize = Vector2.all(2); final Vector2 _position; + final int _maskBits; static const spritePath = 'components/ball.png'; @@ -34,7 +37,12 @@ class Ball extends PositionBodyComponent ..position = _position ..type = BodyType.dynamic; - return world.createBody(bodyDef)..createFixture(fixtureDef); + final body = world.createBody(bodyDef); + + body.createFixture(fixtureDef) + ..filterData.categoryBits = _maskBits + ..filterData.maskBits = _maskBits; + return body; } void lost() { @@ -42,8 +50,8 @@ class Ball extends PositionBodyComponent final bloc = gameRef.read()..add(const BallLost()); - final shouldBallRespwan = !bloc.state.isLastBall; - if (shouldBallRespwan) { + final shouldBallRespawn = !bloc.state.isLastBall; + if (shouldBallRespawn) { gameRef.spawnBall(); } }