extends AnimatedSprite2D const FOG_COLOR_DEFAULT = Color(0.8, 0.8, 0.8, 0.8) const FOG_COLOR_WHITE = Color(1, 1, 1, 1) const FOG_COLOR_BLACK = Color(0, 0, 0, 1) const FOG_COLOR_GRAY = Color(0.5, 0.5, 0.5, 1) const FOG_COLOR_DARK_GRAY = Color(0.2, 0.2, 0.2, 1) var FOG_FRAME_MIN = 0 var FOG_FRAME_MAX var FOG_FRAME_DEFAULT const FOG_OFFSET_DEFAULT = Vector2(0, 50) func _ready() -> void: FOG_FRAME_MAX = sprite_frames.get_frame_count(animation) - 1 FOG_FRAME_DEFAULT = FOG_FRAME_MAX var _fog_tween: Tween func tween_fog( end_frame := frame, end_modulate := modulate, end_offset := offset, duration := 0.8, close_at_end := false ) -> void: if not is_node_ready(): return if GlobalConfig.DEBUG: print( "Tween fog to frame: ", end_frame, " modulate: ", end_modulate, " offset: ", end_offset ) if not visible: # 如果没有开启 fog,先开启,并且设置为透明 visible = true modulate = Color.TRANSPARENT if _fog_tween and _fog_tween.is_valid(): _fog_tween.kill() _fog_tween = create_tween() _fog_tween.tween_property(self, "frame", end_frame, duration) if end_modulate != modulate: _fog_tween.parallel().tween_property(self, "self_modulate", end_modulate, duration) if end_offset != offset: _fog_tween.parallel().tween_property(self, "offset", end_offset, duration) if close_at_end: _fog_tween.tween_callback(hide)