你自己的信号
本课属于 Coddy Godot 学习旅程的“信号与碰撞”单元。第 7 课,共 27 课。
你可以为节点定义自己的信号。在脚本顶部声明一个信号,使用 signal:
extends Area2D
signal hit事情发生时,使用 emit() 发送信号:
func _on_body_entered(body):
hit.emit()旧代码可能会使用 emit_signal("hit")。它的作用相同。
尖刺只负责报告有人被击中。被击中后会发生什么,由监听信号的代码决定。这里,Main 上的脚本会监听 hit:
extends Node2D
# 当尖刺有 hit 信号时,Main 会监听它。
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)你很快就会编写这样的监听器。在本课中,你只需要编辑尖刺。
挑战
简单为尖刺添加一个信号,并在有人踩到尖刺时发送它。
- 在
spikes.gd顶部声明signal hit。 - 在
_on_body_entered中,用hit.emit()发送信号。
按“开始”并走到尖刺上:控制台会显示 Ouch!,你的颜色会变成珊瑚色。然后按“检查”。
亲手试试
extends Area2D
func _ready():
body_entered.connect(_on_body_entered)
func _on_body_entered(body):
pass
信号与碰撞中的所有课
自己练习: Godot 在线编辑器