在Godot中利用Tween节点指定Easing function来控制参数的变化曲线
介绍: 什么是Easing function
Easing function 用以描述参数值随时间而改变的变化率。 现实生活中的物体几乎不会以维持常数的速度移动,也不会瞬间开始和停止。当我们打开一个抽屉时,一开始的速度非常快,在拉出来之后慢下来。将物品跌落地板时,它一开始会向下加速,然后在击中地板后回弹。
Easing funcion 是一种描述变化的曲线方程,非常适合用来描绘生动的运动过程。在参考链接中我们可以找到许多有趣的easing function。而Godot的Tween节点也提供了用于指定Easing方式的参数。
Tween节点
godot提供了一种tween节点来简化插值变换的实现。以下代码块是比较常见的用法。
...
onready tween = $Tween
func start():
tween.interpolate_property(object, “propertyName”, initial_val, final_val, duration, trans_type, ease_type, delay)
tween.start()
...
被指定的<object> 中名为 <propertyName> 的成员变量将会在<duration>时间内从初始值变化到最终值。具体的插值规则以及曲线的形态由<trans_type>和<ease_type>共同指定。详细的参数描述请见Tween节点的文档中的EaseType
和TransitionType
两个枚举类型。
enum EaseType:
...
enum TransitionType:
...
组合这两个参数可以实现丰富的变化方式,请自行具体实践。
监听插值变化的过程
Tween节点提供了三个有用的signal来帮助我们监听整个插值动画的过程。
tween_completed( Object object, NodePath key )
Emitted when a tween ends.
tween_started( Object object, NodePath key )
Emitted when a tween starts.
tween_step( Object object, NodePath key, float elapsed, Object value )
Emitted at each step of the animation.
更加丰富的变化方式
如果Tween节点中所有的预设方式还是无法满足要求,那么我们就可以考虑使用AnimationPlay
这个节点了,这个工具最佳情况下允许我们以0.02秒的间隔指定任何property关键变化值,可以满足绝大部分的需求。有机会再单独介绍这个节点。
补充说明:property即为inspector面板上可以看到的任何值。
暂无关于此日志的评论。