extends CanvasLayer @onready var a_match = $"火柴/A火" as AnimatedSprite2D @onready var l_match = $"火柴/L火柴" as PointLight2D @onready var l_vibe = $"火柴/L光晕" as PointLight2D @onready var root_match = $"火柴" as Node2D @onready var a_xiaochan = $"BG_小蝉/A小蝉侧头" as AnimatedSprite2D @onready var a_eye = $"小蝶脸部/A眼睛" as AnimatedSprite2D @onready var a_mouth = $"小蝶脸部/A嘴巴" as AnimatedSprite2D @onready var a_hand_root = $"小蝉手" as Node2D @onready var a_hand_shadow = $"小蝉手/A小蝉捂脸阴影" as AnimatedSprite2D @onready var a_hand_arm = $"小蝉手/A小蝉捂脸胳膊" as AnimatedSprite2D @onready var a_hand = $"小蝉手/A小蝉捂脸手" as AnimatedSprite2D @onready var animation_player = $AnimationPlayer as AnimationPlayer var sprite_frames: SpriteFrames func _ready() -> void: layer = GlobalConfig.CANVAS_LAYER_LITTLE_GAME sprite_frames = a_match.sprite_frames a_match.frame_changed.connect(_on_match_frame_changed.call_deferred) start() func _on_match_frame_changed(): # 火柴光替换 L火柴 的 texture l_match.texture = sprite_frames.get_frame_texture("火柴光", a_match.frame) # frame == 3 时最大,共 7 frames l_vibe.texture_scale = 1.0 + smoothstep(0, 4, pingpong(a_match.frame, 3)) * 0.3 var dialogue_c02 = preload("res://asset/dialogue/c02.dialogue") func start(): # 配合嘴巴动效 DialogueManager.got_dialogue.connect(_on_got_dialogue) DialogueManager.dialogue_ended.connect(_on_dialogue_ended) root_match.hide() await create_tween().tween_interval(3.0).finished #### part1: 擦火柴 root_match.position.y = 100 $"Sfx擦火柴".play() await create_tween().tween_interval(0.3).finished root_match.show() # 伸手 var tween = create_tween() tween.tween_property(root_match, "position:y", 0, 2.0) tween.tween_interval(2.0) await tween.finished #### part2: 小蝉浮现,对话 # 小蝉侧过来 a_xiaochan.play("小婵探头出来") await a_xiaochan.animation_finished await create_tween().tween_interval(0.5).finished # 斜眼看 a_eye.play("眼睛斜看") await a_eye.animation_finished await create_tween().tween_interval(1.5).finished # 和小蝉对话 DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_s11_谢幕交谈1") await DialogueManager.dialogue_ended #### part3: 小蝉捂眼,瞎子、胖子声音 # 小蝉身体回正、捂眼 a_xiaochan.play("小婵探头回去") await a_xiaochan.animation_finished animation_player.play("小蝉捂眼") await animation_player.animation_finished SceneManager.pop_debug_dialog_info("音效", "小蝉笑声/耳鸣") await create_tween().tween_interval(3.0).finished # 瞎子打断 DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_s11_谢幕交谈2") await DialogueManager.dialogue_ended #### part4: 结束 ArchiveManager.set_global_entry("c02_burning_end", true) SceneManager.release_player() func _on_got_dialogue(line: DialogueLine): toggle_speak(line.character == "吕萍") func _on_dialogue_ended(_res): toggle_speak(false) func toggle_speak(talking := true): if talking: a_mouth.play("嘴巴动效") else: a_mouth.stop() a_mouth.frame = 0