Свой сигнал
Часть раздела Сигналы и столкновения путешествия по Godot на Coddy. Урок 7 из 27.
Ты можешь создавать собственные сигналы для узла. Объяви сигнал в начале скрипта с помощью signal:
extends Area2D
signal hitОтправляй его с помощью emit(), когда происходит нужное событие:
func _on_body_entered(body):
hit.emit()В старом коде может использоваться emit_signal("hit"). Он выполняет то же самое.
Шипы лишь сообщают, что кто-то получил удар. То, что происходит при ударе, зависит от кода, который прослушивает сигнал. Здесь скрипт на Main прослушивает hit:
extends Node2D
# Main ожидает сигнал hit от шипов, когда он у них появится.
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)Скоро ты будешь писать такие обработчики. В этом уроке ты редактируешь только шипы.
Задание
ЛегкоДайте шипам сигнал и отправляйте его, когда кто-нибудь на них наступает:
- Объявите
signal hitв началеspikes.gd. - В
_on_body_enteredотправьте его с помощьюhit.emit().
Наступите на шипы. В консоли должно появиться Ouch!, и вы станете кораллового цвета.
Попробуйте сами
extends Area2D
func _ready():
body_entered.connect(_on_body_entered)
func _on_body_entered(body):
pass
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Сигналы и столкновения
Потренируйтесь самостоятельно: Песочница Godot