Zamknięte drzwi
Część sekcji Projekty ścieżki Godot w Coddy. Lekcja 31 z 36.
Door blokuje drogę do schodów. Jest obiektem typu StaticBody2D, więc move_and_slide zatrzymuje na nim bohatera. Przed nim znajduje się DoorZone, czyli obszar typu Area2D, nieco szerszy niż drzwi, dzięki czemu bohater dociera do niego jako pierwszego.
Gdy bohater z kluczem wchodzi do obszaru, drzwi się otwierają:
func _on_door_zone_body_entered(body):
if has_key:
$Door.queue_free()
$DoorZone.queue_free()Usuń również obszar. W przeciwnym razie bohater ponownie do niego wejdzie, $Door już nie będzie istnieć, a gra zatrzyma się z komunikatem Nie znaleziono węzła.
Usuń drzwi za pomocą queue_free(). hide() jedynie przestaje je rysować. Ich kształt kolizji nadal będzie blokować bohatera.
Wyzwanie
ŚredniOtwórz drzwi kluczem.
- W pliku
main.gdpołącz$DoorZone.body_enteredz funkcją. - Gdy ciało wejdzie, a
has_keyma wartość true, usuń$Doori$DoorZone.
Naciśnij „Graj”, weź klucz i podejdź do drzwi: otworzą się. Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
extends Node2D
var has_key = false
func _ready():
$Key.body_entered.connect(_on_key_body_entered)
func _on_key_body_entered(body):
has_key = true
$Key.queue_free()
$HUD/KeyIcon.visible = true
Wszystkie lekcje w sekcji Projekty
1Projekt: Breakout
Paletka w BreakoutUtrzymaj paletkę na ekranie4Projekt: Podziemny labirynt
Przejdź przez lochPodnieś kluczPoćwicz samodzielnie: Edytor online Godot