Menu
CoddyTech

Đâ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 = true

Mộ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.

challenge icon

Thử thách

Khó

Kết thúc trò chơi khi va chạm.

  1. Trong pipe.gd, thêm signal hit, kết nối body_entered trong _ready và phát hit khi một vật thể đi vào.
  2. Trong flyer.gd, thêm signal crashed và phát tín hiệu đó khi position.y lớn hơn 306.
  3. Trong main.gd, kết nối hit của mỗi ống và crashed của nhân vật bay với _on_crash. Hàm này hiển thị Game Over và 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

Tự luyện tập: Playground Godot