Menu
CoddyTech

Cánh cửa khóa

Thuộc phần Dự án trong hành trình Godot của Coddy. Bài học 31 trên 36.

Một Door chặn lối lên cầu thang. Nó là một StaticBody2D, nên move_and_slide sẽ dừng nhân vật tại đó. Phía trước cửa là DoorZone, một Area2D rộng hơn cửa một chút, nên nhân vật sẽ chạm vào vùng này trước.

Khi nhân vật cầm chìa khóa bước vào vùng này, cửa sẽ mở:

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

Hãy xóa cả vùng này. Nếu không, nhân vật sẽ bước vào đó lần nữa, $Door không còn tồn tại và trò chơi sẽ dừng với lỗi Node not found.

Xóa cửa bằng queue_free(). hide() chỉ ngừng vẽ cửa. Hình dạng va chạm của cửa vẫn chặn nhân vật.

challenge icon

Thử thách

Trung bình

Mở cửa bằng chìa khóa.

  1. Trong main.gd, kết nối $DoorZone.body_entered với một hàm.
  2. Khi một vật thể đi vào và has_key là true, xóa $Door và $DoorZone.

Nhấn Chơi, lấy chìa khóa rồi đi đến cửa: cửa sẽ mở. Sau đó nhấn Kiểm tra.

Tự làm thử

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

Tất cả bài học trong Dự án

Tự luyện tập: Playground Godot