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.
Thử thách
Trung bìnhMở cửa bằng chìa khóa.
- Trong
main.gd, kết nối$DoorZone.body_enteredvới một hàm. - Khi một vật thể đi vào và
has_keylà true, xóa$Doorvà$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
1Dự án: Breakout
Thanh đỡ trong BreakoutGiữ thanh đỡ trong màn hình4Dự án: trò chơi khám phá hầm ngục
Khám phá hầm ngụcNhặt chìa khóaTự luyện tập: Playground Godot