Godot-StartUP

创建于:2018-07-28

创建人: Justus

44 信息 154 成员
讨论基于Godot以及Unity引擎的游戏开发经验,理论和最佳实践。共享一些通用思路以启发另一种生产工具中的实践。独立开发群QQ: 122017359

在Godot中利用Tween节点指定Easing function来控制参数的变化曲线

Justus 2018-07-28

在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节点的文档中的EaseTypeTransitionType两个枚举类型。

enum EaseType:
...
enum TransitionType:
...

组合这两个参数可以实现丰富的变化方式,请自行具体实践。

更加丰富的变化方式

如果Tween节点中所有的预设方式还是无法满足要求,那么我们就可以考虑使用AnimationPlay这个节点了,这个工具最佳情况下允许我们以0.02秒的间隔指定任何property关键变化值,可以满足绝大部分的需求。有机会再单独介绍这个节点。

补充说明:property即为inspector面板上可以看到的任何值。

参考:

  1. Easing Functions Cheat Sheet
  2. [GodotDocs] Tween
(转发自:原日志地址
 

加入 indienova

  • 建立个人/工作室档案
  • 建立开发中的游戏档案
  • 关注个人/工作室动态
  • 寻找合作伙伴共同开发
  • 寻求线上发行
  • 更多服务……
登录/注册