Menu
CoddyTech

Dein eigenes Signal

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

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

extends Area2D

signal hit

Sende es mit emit(), wenn etwas passiert:

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 bei einem Treffer passiert, hängt vom Code ab, der darauf hört. Hier hört das Skript auf Main auf hit:

extends Node2D

# Main lauscht auf das hit-Signal der Stacheln, sobald sie 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 selbst solche Listener 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().

Drücke „Spielen“ und gehe auf die Stacheln: Die Konsole zeigt Ouch! an und du wirst korallfarben. Drücke dann „Prüfen“.

Probier es selbst

extends Area2D

func _ready():
	body_entered.connect(_on_body_entered)

func _on_body_entered(body):
	pass

Alle Lektionen in Signale und Kollisionen

Übe selbstständig: Godot-Playground