播放结束时
本课属于 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" 永远不会发送这个信号。
挑战
简单让机器人跳跃后再次上下摆动。
- 在
_ready()中,将$AnimationPlayer.animation_finished连接到_on_animation_finished。 - 编写
_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 在线编辑器