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 deveria 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 contém o nome da animação, então uma única função pode lidar com 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ê o conecta da mesma forma que body_entered. Uma animação em loop nunca termina, então "bob" nunca o envia.
Desafio
FácilFaça o robô balançar novamente depois de um salto.
- Em
_ready(), conecte$AnimationPlayer.animation_finisheda_on_animation_finished. - Escreva
_on_animation_finished(anim_name): quandoanim_namefor"hop", reproduza"bob".
Pressione “Jogar” e pressione Space: depois do salto, o robô balança novamente. Em seguida, clique em “Verificar”.
Experimente você mesmo
extends Node2D
func _ready():
$AnimationPlayer.play("bob")
func _process(delta):
if Input.is_action_just_pressed("jump"):
$AnimationPlayer.play("hop")
Todas as lições de Sensação de jogo
Pratique por conta própria: Playground de Godot