Menu
CoddyTech
flag Ru iconРусскийdown icon

Свой сигнал

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

Скоро ты будешь писать такие обработчики. В этом уроке ты редактируешь только шипы.

challenge icon

Задание

Легко

Дайте шипам сигнал и отправляйте его, когда кто-нибудь на них наступает:

  1. Объявите signal hit в начале spikes.gd.
  2. В _on_body_entered отправьте его с помощью hit.emit().

Наступите на шипы. В консоли должно появиться Ouch!, и вы станете кораллового цвета.

Попробуйте сами

extends Area2D

func _ready():
	body_entered.connect(_on_body_entered)

func _on_body_entered(body):
	pass
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Сигналы и столкновения

Потренируйтесь самостоятельно: Песочница Godot