@tool extends AnimationRoot var footstep_sfx: Sfx var chapter_sfx: Sfx var main_character: AnimatedSprite2D var duration := 90.0 var target_x := 10750.0 var building_duration := 10.0 var building_y := 350.0 var title_1 = preload("uid://snm3q333tqhl") var title_2 = preload("uid://d4laekws15ap6") var title_3 = preload("uid://5oln8axxcfep") # 覆盖该方法 func _default_data() -> Dictionary: return {} func _ready() -> void: super._ready() if Engine.is_editor_hint(): return func _on_ground_ready() -> void: var camera = SceneManager.get_camera_marker() camera.limit_top = -1000 camera.limit_bottom = 158 await SceneManager.ground_start # 相机抖动 camera.shake_camera(6.0, 1.5) # 不显示玩家,锁定玩家移动 SceneManager.lock_player() main_character = $"../DeployLayer/车夫与吕萍" footstep_sfx = $"黄包车Sfx" # 注意第一段 dialog 在鬼差探头阶段播放 play("intro") # ## test 测试最后运镜 ## # main_character.global_position.x = target_x # await get_tree().create_timer(1.0).timeout # _on_finished() func sun_fall(): var light = $"../DirectionalLight2D" create_tween().tween_property(light, "energy", 0.7, 3.0) func dialog1() -> void: DialogueManager.dialogue_ended.connect(_start_running, CONNECT_ONE_SHOT) # 注意第一段 dialog 在鬼差探头阶段播放 if AudioManager.bgm_dict.has("黄包车背景音效"): $"黄包车背景音效".stop() return DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s11_车夫对话1") func pop_title_1(): SceneManager.pop_center_texture(title_1, 6.0) func pop_title_2(): SceneManager.pop_center_texture(title_2, 10.5) func pop_title_3(): SceneManager.pop_center_texture(title_3, 10.0) func _start_running(_res = null): main_character.play("车夫跑") footstep_sfx.play() footstep_sfx.finished.connect(_loop_sfx) var tween = create_tween() tween.tween_property(main_character, "global_position:x", target_x, duration) tween.tween_callback(_on_finished) func _loop_sfx(): footstep_sfx.play() # 车夫: “小姐,你这是回家过年是哇?” # 车夫: “啊?不会是工作吧” func dialog2() -> void: DialogueManager.show_dialogue_balloon( dialogue_c01, "c01_s11_车夫对话2", [GlobalConfig.DIALOG_IGNORE_INPUT] ) # 6句 # 车夫: “这不行的,你这小年夜还要安排工作啊” # 吕萍: “......” func dialog3() -> void: DialogueManager.show_dialogue_balloon( dialogue_c01, "c01_s11_车夫对话3", [GlobalConfig.DIALOG_IGNORE_INPUT] ) func dialog4() -> void: DialogueManager.show_dialogue_balloon( dialogue_c01, "c01_s11_车夫对话4", [GlobalConfig.DIALOG_IGNORE_INPUT] ) func _on_finished(): var camera = SceneManager.get_camera_marker() footstep_sfx.stop() # 运镜 marker var marker = Node2D.new() get_parent().add_child(marker) main_character.play("车夫静止") marker.global_position = main_character.global_position var target_y = marker.global_position.y - building_y camera.focus_node(marker, 0.0) # 运镜,上下打量公寓楼 var tween = create_tween() tween.tween_interval(1.0) tween.tween_callback(camera.tween_zoom.bind(0.7, 3.0)) tween.tween_callback(final_dialog) tween.tween_property(marker, "global_position:y", target_y, building_duration) tween.tween_callback(_show_chapter) func final_dialog(): await Util.wait(2.0) DialogueManager.show_dialogue_balloon( dialogue_c01, "c01_s11_车夫对话5", [GlobalConfig.DIALOG_IGNORE_INPUT] ) # 展示章节转场 func _show_chapter(): await SceneManager.pop_chapter_notification(2) # 转场前停止背景音乐 AudioManager.stop_bgm_music("黄包车背景音效") SceneManager.get_ground_loader().transition_to_scene("c02_s01", "left")