Menu
CoddyTech

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.

challenge icon

Wyzwanie

Średni

Otwórz drzwi kluczem.

  1. W pliku main.gd połącz $DoorZone.body_entered z funkcją.
  2. Gdy ciało wejdzie, a has_key ma wartość true, usuń $Door i $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

Poćwicz samodzielnie: Edytor online Godot