Menu
CoddyTech

Tín hiệu của riêng bạn

Thuộc phần Tín hiệu và va chạm trong hành trình Godot của Coddy. Bài học 7 trên 27.

Bạn có thể tạo tín hiệu riêng cho một node. Khai báo tín hiệu ở đầu script bằng signal:

extends Area2D

signal hit

Gửi tín hiệu bằng emit() khi sự việc xảy ra:

func _on_body_entered(body):
	hit.emit()

Code cũ có thể dùng emit_signal("hit"). Cách này cũng làm điều tương tự.

Các gai chỉ báo rằng có ai đó bị va trúng. Việc va trúng gây ra điều gì là tùy thuộc vào code lắng nghe tín hiệu. Ở đây, script trên Main lắng nghe hit:

extends Node2D

# Main lắng nghe tín hiệu hit từ các gai nhọn khi chúng phát ra tín hiệu này.
func _ready():
	if $Spikes.has_signal("hit"):
		$Spikes.hit.connect(_on_spikes_hit)

func _on_spikes_hit():
	print("Ouch!")
	$Player.modulate = Color(1, 0.42, 0.42)

Bạn sẽ sớm viết những đoạn code lắng nghe như thế này. Trong bài học này, bạn chỉ chỉnh sửa các gai.

challenge icon

Thử thách

Dễ

Tạo một tín hiệu cho các gai nhọn và gửi tín hiệu đó khi có ai giẫm lên chúng.

  1. Khai báo signal hit ở đầu tệp spikes.gd.
  2. Trong _on_body_entered, gửi tín hiệu đó bằng hit.emit().

Nhấn Chơi rồi bước lên các gai nhọn: Console hiển thị Ouch! và nhân vật của bạn chuyển sang màu san hô. Sau đó nhấn Kiểm tra.

Tự làm thử

extends Area2D

func _ready():
	body_entered.connect(_on_body_entered)

func _on_body_entered(body):
	pass

Tất cả bài học trong Tín hiệu và va chạm

Tự luyện tập: Playground Godot