Menu
CoddyTech

Życia w Breakout

Część sekcji Projekty ścieżki Godot w Coddy. Lekcja 8 z 33.

Gdy paletka nie trafi, piłka wypada dołem. Daj graczowi trzy życia.

W pliku ball.gd piłka, która spadła poniżej y = 380, została nietrafiona. Wyemituj sygnał missed i ponownie umieść piłkę nad paletką.

if position.y > 380:
	missed.emit()
	position = Vector2(320, 290)
	velocity = Vector2(110, -280)

W pliku main.gd odliczaj życia. Gdy ich liczba spadnie do zera, wyświetl komunikat „Koniec gry” i wstrzymaj grę za pomocą get_tree().paused = true. Paletka i piłka mają ustawienie Pausable, więc się zatrzymają. Main ma ustawienie Always, więc nadal będzie działać i będzie mogła odczytać klawisz Enter:

func _process(delta):
	if get_tree().paused and Input.is_action_just_pressed("action"):
		get_tree().paused = false
		get_tree().reload_current_scene()

Wznów grę przed ponownym wczytaniem sceny. Pauza dotyczy drzewa, a nie sceny, więc ponownie wczytana scena rozpoczęłaby działanie w stanie zamrożenia.

challenge icon

Wyzwanie

Trudny
  1. W pliku ball.gd dodaj signal missed. Gdy position.y przekroczy 380, wyemituj sygnał i umieść piłkę z powrotem w punkcie (320, 290) z prędkością (110, -280).
  2. W pliku main.gd zacznij od var lives = 3 i wyświetl Lives: 3 w $HUD/Lives. Każde pudło odbiera jedno życie i aktualizuje etykietę.
  3. Gdy liczba żyć wyniesie 0, wyświetl Game Over w $HUD/Message i wstrzymaj grę.
  4. Gdy gra jest wstrzymana, naciśnięcie klawisza Enter (klawisza action) wznawia grę i ponownie wczytuje scenę.

Spróbuj swoich sił

extends Node2D

const BRICK = preload("res://brick.tscn")
const COLORS = [Color(1, 0.42, 0.42), Color(1, 0.78, 0.34), Color(0.49, 0.95, 0.75), Color(0.369, 0.635, 1), Color(0.75, 0.82, 0.95)]

var score = 0

func _ready():
	for row in 5:
		for column in 8:
			var brick = BRICK.instantiate()
			brick.position = Vector2(68 + column * 72, 60 + row * 26)
			brick.color = COLORS[row]
			add_child(brick)
	$Ball.brick_broken.connect(_on_brick_broken)
	$HUD/Score.text = "Score: 0"

func _on_brick_broken():
	score += 10
	$HUD/Score.text = "Score: %d" % score
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