Menu
CoddyTech

Seu Próprio Sinal

Parte da seção Sinais e colisões do Journey de Godot da Coddy. Lição 7 de 27.

Você pode dar sinais próprios a um nó. Declare um no início do script com signal:

extends Area2D

signal hit

Envie-o com emit() quando o evento acontecer:

func _on_body_entered(body):
	hit.emit()

Códigos mais antigos podem usar emit_signal("hit"). Ele faz a mesma coisa.

Os espinhos apenas informam que alguém foi atingido. O que acontece quando alguém é atingido depende do código que escuta. Aqui, o script em Main escuta hit:

extends Node2D

# Main escuta o sinal hit dos spikes assim que eles tiverem esse sinal.
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)

Em breve você escreverá listeners como este. Nesta lição, você editará apenas os espinhos.

challenge icon

Desafio

Fácil

Dê um sinal aos espinhos e envie-o quando alguém pisar neles.

  1. Declare signal hit no início de spikes.gd.
  2. Em _on_body_entered, envie-o com hit.emit().

Pressione “Jogar” e caminhe sobre os espinhos: o Console mostra Ouch! e você fica coral. Em seguida, clique em “Verificar”.

Experimente você mesmo

extends Area2D

func _ready():
	body_entered.connect(_on_body_entered)

func _on_body_entered(body):
	pass

Todas as lições de Sinais e colisões

Pratique por conta própria: Playground de Godot