refactor: dimension plunger

pull/96/head
Allison Ryan 4 years ago
parent e2c67571d5
commit 76cacf9db0

@ -21,9 +21,15 @@ class Plunger extends BodyComponent with KeyboardHandler, InitialPosition {
@override @override
Body createBody() { 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() final bodyDef = BodyDef()
..position = initialPosition ..position = initialPosition
@ -36,7 +42,7 @@ class Plunger extends BodyComponent with KeyboardHandler, InitialPosition {
/// Set a constant downward velocity on the [Plunger]. /// Set a constant downward velocity on the [Plunger].
void _pull() { void _pull() {
body.linearVelocity = Vector2(0, -3); body.linearVelocity = Vector2(0, -7);
} }
/// Set an upward velocity on the [Plunger]. /// 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 /// The velocity's magnitude depends on how far the [Plunger] has been pulled
/// from its original [initialPosition]. /// from its original [initialPosition].
void _release() { void _release() {
final velocity = (initialPosition.y - body.position.y) * 9; final velocity = (initialPosition.y - body.position.y) * 4;
body.linearVelocity = Vector2(0, velocity); body.linearVelocity = Vector2(0, velocity);
} }
@ -121,12 +127,12 @@ class PlungerAnchorPrismaticJointDef extends PrismaticJointDef {
plunger.body, plunger.body,
anchor.body, anchor.body,
anchor.body.position, anchor.body.position,
Vector2(0, -1), Vector2(18.6, PinballGame.boardBounds.height),
); );
enableLimit = true; enableLimit = true;
lowerTranslation = double.negativeInfinity; lowerTranslation = double.negativeInfinity;
enableMotor = true; enableMotor = true;
motorSpeed = 50; motorSpeed = 80;
maxMotorForce = motorSpeed; maxMotorForce = motorSpeed;
collideConnected = true; collideConnected = true;
} }

@ -1,5 +1,7 @@
// ignore_for_file: public_member_api_docs // ignore_for_file: public_member_api_docs
import 'dart:async'; import 'dart:async';
import 'dart:math' as math;
import 'package:flame/extensions.dart'; import 'package:flame/extensions.dart';
import 'package:flame/input.dart'; import 'package:flame/input.dart';
import 'package:flame_bloc/flame_bloc.dart'; import 'package:flame_bloc/flame_bloc.dart';
@ -24,6 +26,8 @@ class PinballGame extends Forge2DGame
width: boardSize.x, width: boardSize.x,
height: -boardSize.y, height: -boardSize.y,
); );
static final boardPerspectiveAngle =
-math.atan(18.6 / PinballGame.boardBounds.height);
@override @override
void onAttach() { void onAttach() {
@ -60,13 +64,8 @@ class PinballGame extends Forge2DGame
} }
Future<void> _addPlunger() async { Future<void> _addPlunger() async {
plunger = Plunger(compressionDistance: 2); plunger = Plunger(compressionDistance: 29)
..initialPosition = Vector2(41.5, -49);
plunger.initialPosition = boardBounds.bottomRight.toVector2() +
Vector2(
-5,
10,
);
await add(plunger); await add(plunger);
} }

Loading…
Cancel
Save