Menu
CoddyTech

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.

challenge icon

Thử thách

Trung bình

Ghi một điểm cho mỗi ống bạn bay qua.

  1. Trong pipe.gd, thêm signal scored, kết nối $Gap.body_entered và phát tín hiệu scored khi một vật thể đi vào khe hở.
  2. Trong main.gd, thêm var score = 0 và hiển thị 0 trong $HUD/Score lúc bắt đầu.
  3. Kết nối tín hiệu scored củ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

Tự luyện tập: Playground Godot