51 lines
1.3 KiB
GDScript3
51 lines
1.3 KiB
GDScript3
|
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)
|