Đâm vào ống dẫn
Thuộc phần Dự án trong hành trình Godot của Coddy. Bài học 26 trên 36.
Chạm vào ống hoặc mặt đất sẽ kết thúc trò chơi. Cả hai đều gọi đến một hàm trong main.gd:
func _on_crash():
$HUD/Message.text = "Game Over"
get_tree().paused = trueMột chiếc ống. Ống là một Area2D có hai hình dạng, nửa trên và nửa dưới. Khoảng trống không có hình dạng. Trong pipe.gd, hãy kết nối body_entered và phát tín hiệu hit. main.gd kết nối tín hiệu hit của mỗi ống mới trước khi thêm ống đó.
Mặt đất. Phần trên của mặt đất nằm ở y = 318. Mép của nhân vật bay cách tâm 12 pixel, vì vậy nhân vật chạm đất khi position.y lớn hơn 306. Sau đó, flyer.gd phát tín hiệu crashed.
Nhân vật bay, các ống và bộ hẹn giờ đều có thể tạm dừng, vì vậy khi tạm dừng, tất cả đều dừng lại.
Thử thách
KhóKết thúc trò chơi khi va chạm.
- Trong
pipe.gd, thêmsignal hit, kết nốibody_enteredtrong_readyvà pháthitkhi một vật thể đi vào. - Trong
flyer.gd, thêmsignal crashedvà phát tín hiệu đó khiposition.ylớn hơn306. - Trong
main.gd, kết nốihitcủa mỗi ống vàcrashedcủa nhân vật bay với_on_crash. Hàm này hiển thịGame Overvà tạm dừng trò chơi.
Nhấn Chơi rồi để nhân vật rơi xuống: dòng chữ Game Over sẽ xuất hiện. Sau đó nhấn Kiểm tra.
Tự làm thử
extends Node2D
const PIPE = preload("res://pipe.tscn")
func _ready():
$PipeTimer.timeout.connect(_on_pipe_timer_timeout)
func _on_pipe_timer_timeout():
var pipe = PIPE.instantiate()
pipe.position = Vector2(700, randf_range(100, 250))
$Pipes.add_child(pipe)
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