Menu
CoddyTech

Mạng trong Breakout

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

Khi thanh đỡ đánh trượt, bóng rơi khỏi cạnh dưới. Hãy cho người chơi ba mạng.

Trong ball.gd, bóng bị đánh trượt khi ở dưới y = 380. Phát tín hiệu missed rồi đưa bóng trở lại phía trên thanh đỡ:

if position.y > 380:
	missed.emit()
	position = Vector2(320, 290)
	velocity = Vector2(110, -280)

Trong main.gd, hãy lắng nghe tín hiệu này giống như khi lắng nghe brick_broken. Hàm được gọi sẽ trừ một mạng và hiển thị số mạng mới, tương tự như hàm tính điểm với điểm số.

challenge icon

Thử thách

Khó

Cho người chơi ba mạng.

  1. Trong ball.gd, thêm signal missed. Bên dưới y = 380, phát tín hiệu đó và đưa bóng trở lại như đã trình bày ở trên.
  2. Trong main.gd, thêm var lives = 3 và hiển thị Lives: 3 trong $HUD/Lives.
  3. Kết nối $Ball.missed với _on_missed, hàm này trừ một mạng và hiển thị số mạng còn lại.

Nhấn Chơi rồi để bóng rơi: nhãn hiển thị Lives: 2 và một quả bóng mới xuất hiện. Sau đó nhấn Kiểm tra.

Tự làm thử

extends Node2D

const BRICK = preload("res://brick.tscn")
const COLORS = [Color(1, 0.42, 0.42), Color(1, 0.78, 0.34), Color(0.49, 0.95, 0.75), Color(0.369, 0.635, 1), Color(0.75, 0.82, 0.95)]

var score = 0

func _ready():
	for row in 5:
		for column in 8:
			var brick = BRICK.instantiate()
			brick.position = Vector2(68 + column * 72, 60 + row * 26)
			brick.color = COLORS[row]
			add_child(brick)
	$Ball.brick_broken.connect(_on_brick_broken)
	$HUD/Score.text = "Score: 0"

func _on_brick_broken():
	score += 10
	$HUD/Score.text = "Score: %d" % score

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

Tự luyện tập: Playground Godot