Menu
CoddyTech

Game over in Breakout

Fa parte della sezione Progetti del percorso Godot di Coddy. Lezione 9 di 36.

Treti errori dovrebbero terminare la partita. Quando le vite sono zero, mostra «Game Over» e metti in pausa con get_tree().paused = true. La racchetta e la pallina sono In pausa, quindi si bloccano. Main è Sempre attivo, quindi continua a funzionare e può leggere Invio:

func _process(delta):
	if get_tree().paused and Input.is_action_just_pressed("action"):
		get_tree().paused = false
		get_tree().reload_current_scene()

Rimuovi la pausa prima di ricaricare. La pausa riguarda l'albero, non la scena, quindi una scena ricaricata partirebbe bloccata.

challenge icon

Sfida

Difficile

Termina la partita quando finisce l'ultima vita.

  1. In _on_missed, quando lives è 0, mostra Game Over in $HUD/Message e metti in pausa la partita.
  2. Aggiungi _process: quando la partita è in pausa e action è appena stato premuto, rimuovi la pausa, poi ricarica la scena.

Premi «Gioca» e fai mancare tre palline: appare Game Over e la pallina si ferma. Premi Invio per ricominciare. Poi premi «Verifica».

Provalo tu

extends Node2D

const BRICK = preload("res://brick.tscn")
const COLORS = [Color(1, 0.42, 0.42), Color(1, 0.78, 0.34), Color(0.49, 0.95, 0.75), Color(0.369, 0.635, 1), Color(0.75, 0.82, 0.95)]

var score = 0
var lives = 3

func _ready():
	for row in 5:
		for column in 8:
			var brick = BRICK.instantiate()
			brick.position = Vector2(68 + column * 72, 60 + row * 26)
			brick.color = COLORS[row]
			add_child(brick)
	$Ball.brick_broken.connect(_on_brick_broken)
	$HUD/Score.text = "Score: 0"
	$Ball.missed.connect(_on_missed)
	$HUD/Lives.text = "Lives: 3"

func _on_brick_broken():
	score += 10
	$HUD/Score.text = "Score: %d" % score

func _on_missed():
	lives -= 1
	$HUD/Lives.text = "Lives: %d" % lives

Tutte le lezioni di Progetti

Esercitati da solo: Playground Godot