xiandie/scene/effect/dizzy_shader.gd

23 lines
694 B
GDScript

extends CanvasLayer
@onready var rect = $ColorRect as ColorRect
func _ready() -> void:
rect.material.set("shader_parameter/intensity", 0.0)
var tween: Tween
# duration 最短 1.5s
func dizzy(duration := 3.5, intensity := 1.5, ease_in_duration := 0.5, ease_out_duration := 1.0) -> void:
if tween and tween.is_valid():
tween.kill()
show()
tween = create_tween()
tween.tween_property(rect.material, "shader_parameter/intensity", intensity, ease_in_duration)
tween.tween_interval(maxf(duration - 1.5, 0.01))
tween.tween_property(rect.material, "shader_parameter/intensity", 0.0, ease_out_duration).set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_CUBIC)
tween.finished.connect(hide)