xiandie/scene/effect/flash_effect.gd

34 lines
1.0 KiB
GDScript

extends CanvasLayer
@onready var light = $PointLight2D as PointLight2D
func _ready() -> void:
layer = GlobalConfig.CANVAS_LAYER_EFFECT
# 两轮闪烁时 visible 的 canvas items
func flash(visible_nodes_r1: Array, visible_nodes_r2: Array) -> void:
for n in visible_nodes_r1:
n.show()
n.modulate.a = 0
for n in visible_nodes_r2:
n.show()
n.modulate.a = 0
light.energy = 0
var tween = create_tween()
tween.tween_property(light, "energy", 7.0, 0.1)
for n in visible_nodes_r1:
tween.parallel().tween_property(n, "modulate:a", 1.0, 0.03)
tween.tween_property(light, "energy", 4.0, 0.02)
tween.tween_property(light, "energy", 8.0, 0.01)
tween.tween_property(light, "energy", 0.5, 0.1)
tween.tween_property(light, "energy", 7.0, 0.01)
for n in visible_nodes_r1:
tween.parallel().tween_callback(n.hide)
for n in visible_nodes_r2:
tween.parallel().tween_property(n, "modulate:a", 1.0, 0.03)
tween.tween_property(light, "energy", 0.0, 0.1)
for n in visible_nodes_r2:
tween.parallel().tween_callback(n.hide)