Menu
CoddyTech

A porta trancada

Parte da seção Projetos do Journey de Godot da Coddy. Lição 31 de 36.

Uma Door bloqueia o caminho até as escadas. Ela é um StaticBody2D, então move_and_slide para o herói ao encontrá-la. À frente dela fica DoorZone, uma Area2D um pouco mais larga que a porta, para que o herói a alcance primeiro.

Quando o herói entra na zona com a chave, a porta se abre:

func _on_door_zone_body_entered(body):
	if has_key:
		$Door.queue_free()
		$DoorZone.queue_free()

Remova também a zona. Caso contrário, o herói entrará nela novamente, $Door não existirá mais e o jogo será interrompido com Nó não encontrado.

Remova a porta com queue_free(). hide() apenas interrompe a exibição. A forma de colisão dela ainda bloquearia o herói.

challenge icon

Desafio

Médio

Abra a porta com a chave.

  1. Em main.gd, conecte $DoorZone.body_entered a uma função.
  2. Quando um corpo entrar e has_key for verdadeiro, remova $Door e $DoorZone.

Pressione “Jogar”, pegue a chave e caminhe até a porta: ela se abre. Depois, “Verificar”.

Experimente você mesmo

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

Todas as lições de Projetos

Pratique por conta própria: Playground de Godot