From 76cacf9db0b5b96d4b114fdf05e4af78b0d9fb3b Mon Sep 17 00:00:00 2001 From: Allison Ryan Date: Thu, 24 Mar 2022 14:03:23 -0500 Subject: [PATCH] refactor: dimension plunger --- lib/game/components/plunger.dart | 18 ++++++++++++------ lib/game/pinball_game.dart | 13 ++++++------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/lib/game/components/plunger.dart b/lib/game/components/plunger.dart index 9791ec66..d9137457 100644 --- a/lib/game/components/plunger.dart +++ b/lib/game/components/plunger.dart @@ -21,9 +21,15 @@ class Plunger extends BodyComponent with KeyboardHandler, InitialPosition { @override Body createBody() { - final shape = PolygonShape()..setAsBoxXY(2, 0.75); + final shape = PolygonShape() + ..setAsBox( + 1.35, + 0.5, + Vector2.zero(), + PinballGame.boardPerspectiveAngle, + ); - final fixtureDef = FixtureDef(shape)..density = 5; + final fixtureDef = FixtureDef(shape)..density = 20; final bodyDef = BodyDef() ..position = initialPosition @@ -36,7 +42,7 @@ class Plunger extends BodyComponent with KeyboardHandler, InitialPosition { /// Set a constant downward velocity on the [Plunger]. void _pull() { - body.linearVelocity = Vector2(0, -3); + body.linearVelocity = Vector2(0, -7); } /// Set an upward velocity on the [Plunger]. @@ -44,7 +50,7 @@ class Plunger extends BodyComponent with KeyboardHandler, InitialPosition { /// The velocity's magnitude depends on how far the [Plunger] has been pulled /// from its original [initialPosition]. void _release() { - final velocity = (initialPosition.y - body.position.y) * 9; + final velocity = (initialPosition.y - body.position.y) * 4; body.linearVelocity = Vector2(0, velocity); } @@ -121,12 +127,12 @@ class PlungerAnchorPrismaticJointDef extends PrismaticJointDef { plunger.body, anchor.body, anchor.body.position, - Vector2(0, -1), + Vector2(18.6, PinballGame.boardBounds.height), ); enableLimit = true; lowerTranslation = double.negativeInfinity; enableMotor = true; - motorSpeed = 50; + motorSpeed = 80; maxMotorForce = motorSpeed; collideConnected = true; } diff --git a/lib/game/pinball_game.dart b/lib/game/pinball_game.dart index 681a6431..b7b630c8 100644 --- a/lib/game/pinball_game.dart +++ b/lib/game/pinball_game.dart @@ -1,5 +1,7 @@ // ignore_for_file: public_member_api_docs import 'dart:async'; +import 'dart:math' as math; + import 'package:flame/extensions.dart'; import 'package:flame/input.dart'; import 'package:flame_bloc/flame_bloc.dart'; @@ -24,6 +26,8 @@ class PinballGame extends Forge2DGame width: boardSize.x, height: -boardSize.y, ); + static final boardPerspectiveAngle = + -math.atan(18.6 / PinballGame.boardBounds.height); @override void onAttach() { @@ -60,13 +64,8 @@ class PinballGame extends Forge2DGame } Future _addPlunger() async { - plunger = Plunger(compressionDistance: 2); - - plunger.initialPosition = boardBounds.bottomRight.toVector2() + - Vector2( - -5, - 10, - ); + plunger = Plunger(compressionDistance: 29) + ..initialPosition = Vector2(41.5, -49); await add(plunger); }