Свой сигнал
Часть раздела Сигналы и столкновения путешествия по 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