(摘) Tweens: 制作简单动画

声明:内容源自网络,版权归原作者所有。若有侵权请在网页聊天中联系我

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() 是否正在执行

相关文章