mirror of
				https://github.com/flame-engine/flame.git
				synced 2025-11-04 04:47:13 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
import 'package:flame/collisions.dart';
 | 
						|
import 'package:flame/components.dart';
 | 
						|
import 'package:flame/effects.dart';
 | 
						|
import 'package:flutter/material.dart';
 | 
						|
 | 
						|
import '../ember_quest.dart';
 | 
						|
 | 
						|
class Star extends SpriteComponent with HasGameRef<EmberQuestGame> {
 | 
						|
  final Vector2 gridPosition;
 | 
						|
  double xOffset;
 | 
						|
 | 
						|
  final Vector2 velocity = Vector2.zero();
 | 
						|
 | 
						|
  Star({
 | 
						|
    required this.gridPosition,
 | 
						|
    required this.xOffset,
 | 
						|
  }) : super(size: Vector2.all(64), anchor: Anchor.center);
 | 
						|
 | 
						|
  @override
 | 
						|
  Future<void> onLoad() async {
 | 
						|
    final starImage = game.images.fromCache('star.png');
 | 
						|
    sprite = Sprite(starImage);
 | 
						|
    position = Vector2(
 | 
						|
      (gridPosition.x * size.x) + xOffset + (size.x / 2),
 | 
						|
      game.size.y - (gridPosition.y * size.y) - (size.y / 2),
 | 
						|
    );
 | 
						|
    add(RectangleHitbox(collisionType: CollisionType.passive));
 | 
						|
    add(
 | 
						|
      SizeEffect.by(
 | 
						|
        Vector2(-24, -24),
 | 
						|
        EffectController(
 | 
						|
          duration: .75,
 | 
						|
          reverseDuration: .5,
 | 
						|
          infinite: true,
 | 
						|
          curve: Curves.easeOut,
 | 
						|
        ),
 | 
						|
      ),
 | 
						|
    );
 | 
						|
  }
 | 
						|
 | 
						|
  @override
 | 
						|
  void update(double dt) {
 | 
						|
    velocity.x = game.objectSpeed;
 | 
						|
    position += velocity * dt;
 | 
						|
    if (position.x < -size.x || game.health <= 0) {
 | 
						|
      removeFromParent();
 | 
						|
    }
 | 
						|
    super.update(dt);
 | 
						|
  }
 | 
						|
}
 |