Menu
CoddyTech

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

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

challenge icon

Wyzwanie

Trudny
  1. W pliku pipe.gd dodaj signal hit. Połącz body_entered w _ready i emituj hit, gdy ciało wejdzie.
  2. W pliku flyer.gd dodaj signal crashed i emituj go, gdy position.y przekroczy 306.
  3. W pliku main.gd połącz hit każdej rury i crashed obiektu flyer z _on_crash. Wyświetla on Game Over i 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)
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Projekty

Poćwicz samodzielnie: Edytor online Godot