Zderzenie z rurami
Część sekcji Projekty ścieżki Godot w Coddy. Lekcja 23 z 33.
Uderzenie w rurę lub ziemię powinno kończyć grę. W obu przypadkach wywoływana jest jedna funkcja w main.gd:
func _on_crash():
$HUD/Message.text = "Game Over"
get_tree().paused = trueRura. Rura to Area2D z dwoma kształtami: górną i dolną połową. Szczelina nie ma kształtu. W pliku pipe.gd połącz 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 licznik czasu mają ustawienie Pausable, więc pauza zatrzymuje je wszystkie.
Wyzwanie
Trudny- W pliku
pipe.gddodajsignal hit. Połączbody_enteredw_readyi emitujhit, gdy ciało wejdzie. - W pliku
flyer.gddodajsignal crashedi emituj go, gdyposition.yprzekroczy 306. - W pliku
main.gdpołączhitkażdej rury icrashedobiektu flyer z_on_crash. Wyświetla onGame Overi wstrzymuje grę.
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)
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Projekty
3Projekt: Latający Ptaszek
Grawitacja ptaszkaMachanie skrzydłamiPoćwicz samodzielnie: Edytor online Godot