Wenn es fertig ist
Teil des Abschnitts Spielgefühl der Godot-Journey von Coddy. Lektion 22 von 23.
Nach einem Sprung bleibt der Roboter stehen, weil "hop" keine Schleife bildet. Er sollte wieder wippen.
Ein AnimationPlayer sendet das Signal animation_finished, wenn eine Animation, die keine Schleife bildet, ihr Ende erreicht. Das Signal enthält den Namen der Animation, sodass eine Funktion alle Animationen verarbeiten kann.
func _ready():
$AnimationPlayer.animation_finished.connect(_on_animation_finished)
func _on_animation_finished(anim_name):
if anim_name == "hop":
print("Landed")Du verbindest es genauso wie body_entered. Eine Animation in einer Schleife endet nie, also sendet "bob" das Signal nie.
Aufgabe
EinfachLass den Roboter nach einem Hüpfer wieder wippen.
- Verbinde in
_ready()$AnimationPlayer.animation_finishedmit_on_animation_finished. - Schreibe
_on_animation_finished(anim_name): Wennanim_namegleich"hop"ist, spiele"bob"ab.
Drücke „Spielen“ und dann die Leertaste: Nach dem Hüpfer wippt der Roboter wieder. Klicke dann auf „Prüfen“.
Probier es selbst
extends Node2D
func _ready():
$AnimationPlayer.play("bob")
func _process(delta):
if Input.is_action_just_pressed("jump"):
$AnimationPlayer.play("hop")
Alle Lektionen in Spielgefühl
Übe selbstständig: Godot-Playground