Tweens是可以使用数学函数随时间修改其他对象的属性值的对象。
var tween : Tween = create_tween()
var tween : Tween = get_tree().create_tween().bind_node(self) # 创建一个新的全局Tween对象
tween_property(object, property, final_val, duration)
object: 目标对象
property: 要更改的属性
final_val: 最终值
duration: 持续时间(秒)
这种方法虽然非常有用,Godot还提供了一些额外的功能帮助你更准确控制过渡。
as_relative() 指定一个相对值,而不是最终值.
set_trans(transition_type) 设置补间的过渡类型。
from(value) 在补间生效时覆盖属性的当前值
set_delay(delay) 设置补间创建和实际插值开始之间的时间延迟。
set_ease(ease) 设置缓动类型
EASE_IN 开始缓慢,加速接近
EASE_OUT 开始快速,接近结束时减慢
EASE_IN_OUT 两端最慢
EASE_OUT_IN 两端最快
默认情况下,补间对象在链中执行动作,意思是对同一个对象多次调用tween_property()方法,将导致依次执行操作。而在某些情况下,可能希望能并行执行多个动作。
parallel(): 使当前插值与前一个插值并行运行。
set_parallel(): 将执行类型切换为并行。在此补间对象上执行的所有操作都将并行完成。
如果想在一个循环中多次执行相同的插值,甚至是无限执行直到停止:
set_loops(loops): 设置补间执行的次数。使用0值将始终运行。
func MovementRotationAnimation() -> void:
# Create a new Tween object
var movementRotationAnimation : Tween = create_tween()
movementRotationAnimation.set_parallel(true) # Set all tweeners to execute in parallel
movementRotationAnimation.set_loops(0) # Set the tween to execute indefinitely
# Move the current object 16 pixels to the right (X-axis) every 1.6 seconds
# Movement is relative to the objects current position
# Movement uses a linear transition function
movementRotationAnimation.tween_property(self, "position", Vector2.RIGHT * 16, 1.6).as_relative().set_trans(Tween.TRANS_LINEAR)
# Rotate the current object 45 degrees every 1 second
# Rotation is relative to the objects current rotation value
# Rotation uses a linear transition function
movementRotationAnimation.tween_property(self, "rotation_degrees", 45, 1).as_relative().set_trans(Tween.TRANS_LINEAR)
另外还有些控制功能:
play() pause() stop()
is_running() 是否正在执行