142 lines
3.6 KiB
GDScript
142 lines
3.6 KiB
GDScript
@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")
|