Scontrarsi con i tubi
Fa parte della sezione Progetti del percorso Godot di Coddy. Lezione 26 di 36.
Colpire un tubo o il suolo dovrebbe far terminare la partita. Entrambi portano a una funzione in main.gd:
func _on_crash():
$HUD/Message.text = "Game Over"
get_tree().paused = trueUn tubo. Il tubo è un Area2D con due forme, le metà superiore e inferiore. Lo spazio vuoto non ha forma. In pipe.gd, collega body_entered ed emetti un segnale hit. main.gd collega hit di ogni nuovo tubo prima di aggiungerlo.
Il suolo. La sua parte superiore si trova a y = 318. Il bordo del flyer dista 12 pixel dal suo centro, quindi tocca il suolo quando position.y supera 306. A quel punto, flyer.gd emette crashed.
Il flyer, i tubi e il timer sono Pausable, quindi la pausa li blocca tutti.
Sfida
DifficileTermina la partita in caso di collisione.
- In
pipe.gd, aggiungisignal hit, connettibody_enteredin_readyed emettihitquando un corpo entra. - In
flyer.gd, aggiungisignal crasheded emettilo quandoposition.ysupera306. - In
main.gd, connettihitdi ogni tubo ecrasheddel flyer a_on_crash, che mostraGame Overe mette in pausa.
Premi «Gioca» e lasciati cadere: appare Game Over. Poi premi «Verifica».
Provalo tu
extends Node2D
const PIPE = preload("res://pipe.tscn")
func _ready():
$PipeTimer.timeout.connect(_on_pipe_timer_timeout)
func _on_pipe_timer_timeout():
var pipe = PIPE.instantiate()
pipe.position = Vector2(700, randf_range(100, 250))
$Pipes.add_child(pipe)
Tutte le lezioni di Progetti
3Progetto: Flappy Flyer
La gravità del FlyerFai sbattere le ali al FlyerEsercitati da solo: Playground Godot