Menu
CoddyTech

Dein eigenes Signal

Teil des Abschnitts Signale und Kollisionen der Godot-Journey von Coddy. Lektion 7 von 27.

Du kannst einem Node eigene Signale geben. Deklariere eines am Anfang des Skripts mit signal:

extends Area2D

signal hit

Sende es mit emit(), wenn das Ereignis eintritt:

func _on_body_entered(body):
	hit.emit()

Älterer Code verwendet möglicherweise emit_signal("hit"). Das bewirkt dasselbe.

Die Stacheln melden nur, dass jemand getroffen wurde. Was ein Treffer bewirkt, hängt vom Code ab, der darauf reagiert. Hier reagiert das Skript auf Main auf hit:

extends Node2D

# Main lauscht auf das hit-Signal der Stacheln, sobald diese eines haben.
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)

Du wirst bald Listener wie diesen schreiben. In dieser Lektion bearbeitest du nur die Stacheln.

challenge icon

Aufgabe

Einfach

Gib den Stacheln ein Signal und sende es, wenn jemand auf sie tritt:

  1. Deklariere signal hit am Anfang von spikes.gd.
  2. Sende es in _on_body_entered mit hit.emit().

Lauf auf die Stacheln. Die Konsole sollte Ouch! anzeigen und du wirst korallfarben.

Probier es selbst

extends Area2D

func _ready():
	body_entered.connect(_on_body_entered)

func _on_body_entered(body):
	pass
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Signale und Kollisionen

Übe selbstständig: Godot-Playground