Menu
CoddyTech

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 = true

Un 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.

challenge icon

Sfida

Difficile

Termina la partita in caso di collisione.

  1. In pipe.gd, aggiungi signal hit, connetti body_entered in _ready ed emetti hit quando un corpo entra.
  2. In flyer.gd, aggiungi signal crashed ed emettilo quando position.y supera 306.
  3. In main.gd, connetti hit di ogni tubo e crashed del flyer a _on_crash, che mostra Game Over e 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

Esercitati da solo: Playground Godot