feat: improving the spaceship hole area

pull/108/head
Erick Zanardo 4 years ago
parent 90131d9724
commit 45fd7bc341

@ -49,7 +49,7 @@ class PinballGame extends Forge2DGame
unawaited( unawaited(
addFromBlueprint( addFromBlueprint(
Spaceship( Spaceship(
position: Vector2(-25, 32), position: Vector2(-26.5, 28.5),
), ),
), ),
); );

@ -5,6 +5,7 @@ import 'dart:math';
import 'package:flame/components.dart'; import 'package:flame/components.dart';
import 'package:flame_forge2d/flame_forge2d.dart'; import 'package:flame_forge2d/flame_forge2d.dart';
import 'package:flutter/material.dart';
import 'package:pinball_components/gen/assets.gen.dart'; import 'package:pinball_components/gen/assets.gen.dart';
import 'package:pinball_components/pinball_components.dart' hide Assets; import 'package:pinball_components/pinball_components.dart' hide Assets;
@ -16,7 +17,7 @@ class Spaceship extends Forge2DBlueprint {
Spaceship({required this.position}); Spaceship({required this.position});
/// Total size of the spaceship. /// Total size of the spaceship.
static final size = Vector2(24, 18); static final size = Vector2(25, 19);
/// The [position] where the elements will be created /// The [position] where the elements will be created
final Vector2 position; final Vector2 position;
@ -32,8 +33,8 @@ class Spaceship extends Forge2DBlueprint {
SpaceshipSaucer()..initialPosition = position, SpaceshipSaucer()..initialPosition = position,
SpaceshipEntrance()..initialPosition = position, SpaceshipEntrance()..initialPosition = position,
AndroidHead()..initialPosition = position, AndroidHead()..initialPosition = position,
SpaceshipHole()..initialPosition = position - Vector2(4.8, 4.2), SpaceshipHole()..initialPosition = position - Vector2(5.2, 4.8),
SpaceshipHole()..initialPosition = position - Vector2(-7.2, 0.6), SpaceshipHole()..initialPosition = position - Vector2(-7.2, 0.8),
SpaceshipWall()..initialPosition = position, SpaceshipWall()..initialPosition = position,
]); ]);
} }
@ -180,16 +181,17 @@ class SpaceshipHole extends BodyComponent with InitialPosition, Layered {
@override @override
Body createBody() { Body createBody() {
renderBody = false; renderBody = false;
final circleShape = CircleShape()..radius = 1.5; final shape = ArcShape(center: Vector2(-3.5, 2), arcRadius: 6, angle: 1);
final bodyDef = BodyDef() final bodyDef = BodyDef()
..userData = this ..userData = this
..position = initialPosition ..position = initialPosition
..angle = 5.2
..type = BodyType.static; ..type = BodyType.static;
return world.createBody(bodyDef) return world.createBody(bodyDef)
..createFixture( ..createFixture(
FixtureDef(circleShape)..isSensor = true, FixtureDef(shape)..isSensor = true,
); );
} }
} }

Loading…
Cancel
Save