Schiantarsi e ricominciare
Fa parte della sezione Progetti del percorso Godot di Coddy. Lezione 18 di 33.
La nave vola tra le rocce. Una roccia che tocca la nave dovrebbe terminare la partita. In rock.gd, nel metodo _on_body_entered, la nave è il corpo chiamato Ship. La roccia emette un segnale hit_ship. main.gd lo collega in spawn_rock e termina la partita:
func _on_hit_ship():
$HUD/Message.text = "Game Over"
$Ship.hide()
$Boom.position = $Ship.position
$Boom.emitting = true
get_tree().paused = trueBoom è un CPUParticles2D a colpo singolo. Imposta emitting su true e genera un'esplosione. È figlio di Main, che è Always, quindi continua a funzionare mentre la partita è in pausa.
Infine, fai in modo che Enter avvii una nuova partita mentre il gioco è in pausa, come in Breakout: togli la pausa, poi chiama reload_current_scene(). Funziona anche dopo una vittoria.
Sfida
Medio- In
rock.gd, aggiungisignal hit_shiped emettilo quando il corpo èShip. - In
main.gd, collegalo inspawn_rocka_on_hit_ship. MostraGame Over, nasconde la nave, fa esplodere$Boomnel punto in cui si trovava la nave e mette in pausa il gioco. - Quando il gioco è in pausa, premendo Invio lo si riattiva e si ricarica la scena.
Provalo tu
extends Node2D
const ROCK = preload("res://rock.tscn")
var score = 0
var rocks_left = 4
func _ready():
for i in 4:
spawn_rock(Vector2(randf_range(0, 640), 0), Vector2(randf_range(-90, 90), randf_range(40, 90)), 2)
$HUD/Score.text = "Score: 0"
func spawn_rock(where, velocity, size):
var rock = ROCK.instantiate()
rock.position = where
rock.velocity = velocity
rock.size = size
rock.broken.connect(_on_rock_broken)
add_child(rock)
func _on_rock_broken(rock):
if rock.size == 2:
spawn_rock.call_deferred(rock.position, rock.velocity.rotated(0.8) * 1.5, 1)
spawn_rock.call_deferred(rock.position, rock.velocity.rotated(-0.8) * 1.5, 1)
score += 20
rocks_left += 2
else:
score += 50
rocks_left -= 1
$HUD/Score.text = "Score: %d" % score
if rocks_left == 0:
$HUD/Message.text = "You Win!"
get_tree().paused = true
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Progetti
2Progetto: Sparatutto di asteroidi
Ruotare la naveAvviare il motoreEsercitati da solo: Playground Godot