【发布时间】:2022-09-24 18:36:48
【问题描述】:
我有名为 Obstacle 的 SpriteComponent。我在 super 方法中将优先级值设置为 0。但是 Obstacle 组件是使用 update 方法重新生成的。它在退出屏幕时消失。当它再次发生时,优先值变得无效。我正在分享示例屏幕截图。
玩家留在障碍物后面。 GameOverPanel 总是在后面。
@override
Future<void> onLoad() async {
add(ScreenHitbox());
add(gameRef.homeBackgroundParallaxComponent);
add(gameRef.homeBaseParallax);
add(gameRef.obstacleManager..priority = 0);
add(gameRef.playerManager..priority = 1);
add(gameRef.gameOverPanel..priority = 2);
}
@override
void update(double dt) {
super.update(dt);
gameRef.obstacleManager.updateObstacle(GameConst.gameSpeed * dt);
gameRef.playerManager.changePositionDown(value: GameConst.gravity * dt);
}
- 游戏结束面板
class GameOverPanel extends Component with HasGameRef<HopyBirdGame> {
GameOverPanel() : super(priority: 4);
@override
Future<void> onLoad() async {
add(GameOverText());
}
@override
void renderTree(Canvas canvas) {
if (gameRef.gameOver) {
super.renderTree(canvas);
}
}
}
class GameOverText extends SpriteComponent with HasGameRef<HopyBirdGame> {
GameOverText() : super(size: Vector2(300, 80), anchor: Anchor.center);
@override
Future<void>? onLoad() async {
sprite = await gameRef.loadSprite(Assets.gameOver.path);
position = Vector2(gameRef.screenWidth / 2, gameRef.screenHeight / 2);
return super.onLoad();
}
}
标签: flutter dart game-development flame