Quando terminar
Parte da seção Sensação de jogo do Journey de Godot da Coddy. Lição 22 de 23.
Depois de um salto, o robô fica parado, porque "hop" não fica em loop. Ele deve voltar a balançar.
Um AnimationPlayer envia o sinal animation_finished quando uma animação que não fica em loop chega ao fim. O sinal carrega o nome da animação, então uma função pode tratar de todas as animações.
func _ready():
$AnimationPlayer.animation_finished.connect(_on_animation_finished)
func _on_animation_finished(anim_name):
if anim_name == "hop":
print("Landed")Você conecta esse sinal da mesma forma que body_entered. Uma animação em loop nunca termina, então "bob" nunca o envia.
Desafio
FácilConecte o sinal animation_finished do AnimationPlayer a uma função _on_animation_finished(anim_name). Quando a animação concluída for "hop", reproduza "bob" novamente.
Experimente você mesmo
extends Node2D
func _ready():
$AnimationPlayer.play("bob")
func _process(delta):
if Input.is_action_just_pressed("jump"):
$AnimationPlayer.play("hop")
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Sensação de jogo
Pratique por conta própria: Playground de Godot