Zderzenie z rurami
Część sekcji Projekty ścieżki Godot w Coddy. Lekcja 26 z 36.
Uderzenie w rurę lub ziemię powinno kończyć grę. Oba zdarzenia prowadzą do jednej funkcji w main.gd:
func _on_crash():
$HUD/Message.text = "Game Over"
get_tree().paused = trueRura. Rura jest obiektem Area2D z dwoma kształtami: górną i dolną połową. Szczelina nie ma kształtu. W pipe.gd połącz sygnał body_entered i wyemituj sygnał hit. main.gd łączy sygnał hit każdej nowej rury, zanim ją doda.
Ziemia. Jej górna krawędź znajduje się na wysokości y = 318. Krawędź lotnika jest oddalona o 12 pikseli od jego środka, więc dotyka ziemi, gdy position.y przekracza 306. Wtedy flyer.gd emituje sygnał crashed.
Lotnik, rury i zegar są Pausable, więc pauza zatrzymuje je wszystkie.
Wyzwanie
TrudnyZakończ grę po zderzeniu.
- W
pipe.gddodajsignal hit, połączbody_enteredw_readyi wyemitujhit, gdy ciało wejdzie. - W
flyer.gddodajsignal crashedi wyemituj go, gdyposition.yprzekroczy306. - W
main.gdpołączhitkażdej rury icrashedpostaci z_on_crash, który wyświetlaGame Overi wstrzymuje grę.
Naciśnij „Graj” i spadaj: wyświetli się Game Over. Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
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)
Wszystkie lekcje w sekcji Projekty
3Projekt: Latający Ptaszek
Grawitacja ptaszkaMachanie skrzydłamiPoćwicz samodzielnie: Edytor online Godot