Ghi điểm khi qua ống dẫn
Thuộc phần Dự án trong hành trình Godot của Coddy. Bài học 27 trên 36.
Mỗi ống bạn vượt qua được tính một điểm. Ống có một nút con Area2D tên là Gap, một dải mỏng nằm phía sau khe hở. Nhân vật bay chỉ chạm vào dải này sau khi vượt qua khe, nên lúc đó bạn mới ghi điểm.
Trong pipe.gd, kết nối tín hiệu của nút con thông qua $Gap và phát tín hiệu scored:
$Gap.body_entered.connect(_on_gap_body_entered)
func _on_gap_body_entered(body):
scored.emit()Trong main.gd, kết nối tín hiệu scored của mỗi ống mới. Tăng score thêm một rồi hiển thị điểm trong $HUD/Score. str(score) chuyển số thành văn bản. Hiển thị 0 lúc bắt đầu.
Thử thách
Trung bìnhGhi một điểm cho mỗi ống bạn bay qua.
- Trong
pipe.gd, thêmsignal scored, kết nối$Gap.body_enteredvà phát tín hiệuscoredkhi một vật thể đi vào khe hở. - Trong
main.gd, thêmvar score = 0và hiển thị0trong$HUD/Scorelúc bắt đầu. - Kết nối tín hiệu
scoredcủa mỗi ống với một hàm tăng điểm lên một và hiển thị điểm số.
Nhấn Chơi rồi bay qua khe hở: điểm số hiển thị 1. Sau đó nhấn Kiểm tra.
Tự làm thử
extends Area2D
signal hit
const SPEED = 160
func _ready():
body_entered.connect(_on_body_entered)
func _physics_process(delta):
position.x -= SPEED * delta
if position.x < -60:
queue_free()
func _on_body_entered(body):
hit.emit()
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óa3Dự án: Flappy Flyer
Trọng lực của FlyerVỗ cánh cho FlyerTự luyện tập: Playground Godot