Menu
CoddyTech

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.

challenge icon

Desafio

Fácil

Faça o robô balançar novamente depois de um salto.

  1. Em _ready(), conecte $AnimationPlayer.animation_finished a _on_animation_finished.
  2. Escreva _on_animation_finished(anim_name): quando anim_name for "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