Menu
CoddyTech

Punkt za rurę

Część sekcji Projekty ścieżki Godot w Coddy. Lekcja 27 z 36.

Każda minięta rura to jeden punkt. Rura ma element podrzędny Area2D o nazwie Gap — wąski pasek za otworem. Latający obiekt dotyka go dopiero po przeleceniu przez otwór, więc wtedy zdobywasz punkt.

W pliku pipe.gd połącz sygnał elementu podrzędnego za pomocą $Gap i wyemituj sygnał scored:

$Gap.body_entered.connect(_on_gap_body_entered)

func _on_gap_body_entered(body):
	scored.emit()

W pliku main.gd połącz sygnał scored każdej nowej rury. Dodaj 1 do score i wyświetl wynik w $HUD/Score. str(score) zamienia liczbę na tekst. Na początku wyświetl 0.

challenge icon

Wyzwanie

Średni

Zdobywaj punkt za każdą ominiętą rurę.

  1. W pipe.gd dodaj signal scored, połącz $Gap.body_entered i emituj scored, gdy obiekt wleci w szczelinę.
  2. W main.gd dodaj var score = 0 i na początku wyświetl 0 w $HUD/Score.
  3. Połącz sygnał scored każdej rury z funkcją, która dodaje jeden punkt i wyświetla wynik.

Naciśnij „Graj” i przeleć przez szczelinę: wynik wyniesie 1. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

extends Area2D

signal hit

const SPEED = 160

func _ready():
	body_entered.connect(_on_body_entered)

func _physics_process(delta):
	position.x -= SPEED * delta
	if position.x < -60:
		queue_free()

func _on_body_entered(body):
	hit.emit()

Wszystkie lekcje w sekcji Projekty

Poćwicz samodzielnie: Edytor online Godot