所谓动画回调就是当动画播放到某一帧,自动调用一个回调函数
文章目录
- 情景描述
- 用Timer延时并回调?
- 用动画回调实现
- 使用范例
- 动画范例
- 代码范例
- 实现步骤
- 1. 添加`方法调用轨道`
- 2. 选择回调函数所在的节点
- 3. 在`方法调用轨道`插入关键帧
- 4. 选择要回调的函数
- 测试运行
假设有一段名为"Move"的帧动画,我们希望:
- 当它播放到K1帧时,调用一个名为"turn_green"的方法
- 当它播放到K2帧时,再调用一个名为"turn_red"的方法
如果让你用Godot实现这个情景,你该怎么办?
用Timer延时并回调?有些朋友知道Timer
这个节点可以用于延时并回调一个方法。那么我们可能需要:
- 计算出动画播放到K1帧的时长,然后添加一个
Timer
来延迟调用"turn_green"方法。 - 计算出动画播放到K2帧的时长,再添加第二个
Timer
来延迟调用"turn_red"方法。
这种方法有很多让人头疼的问题:
- 人肉计算每一个
Timer
的延时,而且和不能确保完全同步 - 一旦"Move"被修改了比如:帧数修改,播放速率修改,甚至函数的调用顺序修改,我们又不得不重新计算所有
Timer
的延迟;
其实,很多游戏引擎的动画系统都有类似的机制,那就是动画回调
,即动画播放到某一帧时会自动调用回调函数,在Godot Engine里,动画回调由Call Method Track(方法回调轨道)
来实现的。
#Player.gd
extends Sprite
var icon_red = preload("res://icon_red.png")
var icon_green = preload("res://icon_green.png")
func turn_green():
texture = icon_green
func turn_red():
texture = icon_red
实现步骤
1. 添加方法调用轨道
方法调用轨道
插入关键帧
在
方法调用轨道
的K1帧和K2帧添加完关键帧,并设定回调函数。