Punkty i zwycięstwo
Część sekcji Projekty ścieżki Godot w Coddy. Lekcja 17 z 33.
Duża skała jest warta 20 punktów, a mała 50. _on_rock_broken zna rozmiar, więc dodaje punkty i aktualizuje $HUD/Score.
Wygrywasz, gdy nie zostanie żadna skała. Rozpocznij liczenie od 4. Odejmuj jeden za każdą rozbitą skałę i dodaj dwa, gdy duża skała się rozpadnie:
if rock.size == 2:
rocks_left += 2
rocks_left -= 1
if rocks_left == 0:
$HUD/Message.text = "You Win!"
get_tree().paused = truePolicz tutaj dwie nowe skały, a nie w spawn_rock. spawn_rock uruchamia się na końcu klatki, więc liczba spadłaby do zera, zanim pojawią się dwie ostatnie małe skały.
Skały, pociski i statek są wstrzymywane. Main działa zawsze.
Wyzwanie
TrudnyW pliku main.gd:
- Dodaj
var score = 0i na początku wyświetlScore: 0. - Rozbicie dużej skały dodaje 20 punktów, a małej — 50. Wyświetl nowy wynik.
- Dodaj
var rocks_left = 4i odliczaj pozostałe skały, jak pokazano. Gdy ich liczba wyniesie zero, wyświetlYou Win!i wstrzymaj grę.
Spróbuj swoich sił
extends Node2D
const ROCK = preload("res://rock.tscn")
func _ready():
for i in 4:
spawn_rock(Vector2(randf_range(0, 640), 0), Vector2(randf_range(-90, 90), randf_range(40, 90)), 2)
func spawn_rock(where, velocity, size):
var rock = ROCK.instantiate()
rock.position = where
rock.velocity = velocity
rock.size = size
rock.broken.connect(_on_rock_broken)
add_child(rock)
func _on_rock_broken(rock):
if rock.size == 2:
spawn_rock.call_deferred(rock.position, rock.velocity.rotated(0.8) * 1.5, 1)
spawn_rock.call_deferred(rock.position, rock.velocity.rotated(-0.8) * 1.5, 1)
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Projekty
2Projekt: Asteroidy
Obracanie statkiemUruchamianie silnikaPoćwicz samodzielnie: Edytor online Godot