Menu
CoddyTech

Tu propia señal

Parte de la sección Señales y colisiones del Journey de Godot de Coddy. Lección 7 de 27.

Puedes darle a un nodo tus propias señales. Declara una al principio del script con signal:

extends Area2D

signal hit

Envíala con emit() cuando ocurra algo:

func _on_body_entered(body):
	hit.emit()

El código más antiguo puede usar emit_signal("hit"). Hace lo mismo.

Las púas solo informan de que alguien recibió un golpe. Lo que hace un golpe depende del código que escucha. Aquí, el script de Main escucha hit:

extends Node2D

# Main escucha la señal hit de los pinchos, una vez que estos la tienen.
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)

Pronto escribirás detectores como este. En esta lección solo editarás las púas.

challenge icon

Desafío

Fácil

Dales una señal a los pinchos y envíala cuando alguien los pise:

  1. Declara signal hit al principio de spikes.gd.
  2. En _on_body_entered, envíala con hit.emit().

Pisa los pinchos. La consola debería mostrar Ouch! y te pondrás de color coral.

Pruébalo tú mismo

extends Area2D

func _ready():
	body_entered.connect(_on_body_entered)

func _on_body_entered(body):
	pass
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Señales y colisiones

Practica por tu cuenta: Playground de Godot