Menu
CoddyTech

Свой сигнал

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

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

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