Menu
CoddyTech

播放结束时

本课属于 Coddy Godot 学习旅程的“游戏体验”单元。第 22 课,共 23 课。

跳跃后,机器人会停下来,因为 "hop" 不会循环。它应该继续摇摆。

当一个不循环的动画播放到结尾时,AnimationPlayer 会发送 animation_finished 信号。这个信号会携带动画的名称,因此一个函数就能处理所有动画。

func _ready():
	$AnimationPlayer.animation_finished.connect(_on_animation_finished)

func _on_animation_finished(anim_name):
	if anim_name == "hop":
		print("Landed")

连接它的方式和连接 body_entered 一样。循环播放的动画永远不会结束,所以 "bob" 永远不会发送这个信号。

challenge icon

挑战

简单

让机器人跳跃后再次上下摆动。

  1. 在 _ready() 中,将 $AnimationPlayer.animation_finished 连接到 _on_animation_finished。
  2. 编写 _on_animation_finished(anim_name):当 anim_name 为 "hop" 时,播放 "bob"。

按“开始”,再按 Space:机器人跳跃后会再次上下摆动。然后点击“检查”。

亲手试试

extends Node2D

func _ready():
	$AnimationPlayer.play("bob")

func _process(delta):
	if Input.is_action_just_pressed("jump"):
		$AnimationPlayer.play("hop")

游戏体验中的所有课

自己练习: Godot 在线编辑器