xiandie/scene/ground/scene/c01/s11_animation.gd

135 lines
3.8 KiB
GDScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@tool
extends AnimationRoot
var footstep_sfx: Sfx
var chapter_sfx: Sfx
var main_character: AnimatedSprite2D
# 2:33 ~ 3:44, 71s
var duration := 67.0
var target_x := 10750.0
var building_duration := 30.0
var building_y := 450.0
var title_1 = preload("res://asset/art/scene/c01/s04_旧版序章/f_动画字幕1.png")
var title_2 = preload("res://asset/art/scene/c01/s04_旧版序章/f_动画字幕2.png")
var title_3 = preload("res://asset/art/scene/c01/s04_旧版序章/f_动画字幕3.png")
var chapter_title = preload("res://asset/art/scene/c01/s04_旧版序章/f_第一章标题.png")
# 覆盖该方法
func _default_data() -> Dictionary:
return {}
func _ready() -> void:
super._ready()
if Engine.is_editor_hint():
return
func _on_ground_ready() -> void:
main_character = $"../DeployLayer/车夫与吕萍"
footstep_sfx = $"黄包车Sfx"
chapter_sfx = $chapter_sfx
SceneManager.get_camera_marker().limit_bottom = 158
SceneManager.get_camera_marker().limit_top = -158
SceneManager.set_camera_boundary(Rect2(0, -1000, 11360, 1158))
# 相机抖动
get_tree().create_timer(0.5).timeout.connect(SceneManager.get_camera_marker().shake_camera)
play("intro")
# ## test 测试最后运镜 ##
# main_character.global_position.x = target_x
# await get_tree().create_timer(1.0).timeout
# _on_finished()
func pop_title_1():
SceneManager.pop_center_texture(title_1)
func pop_title_2():
SceneManager.pop_center_texture(title_2)
func pop_title_3():
SceneManager.pop_center_texture(title_3)
# 又是这个梦.. 12句
func dialog1() -> void:
# debug 模式允许跳过
if GlobalConfig.DEBUG:
DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s11_车夫对话1")
else:
DialogueManager.show_dialogue_balloon(
dialogue_c01, "c01_s11_车夫对话1", [GlobalConfig.DIALOG_IGNORE_INPUT]
)
DialogueManager.dialogue_ended.connect(_start_running, CONNECT_ONE_SHOT)
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 _on_finished():
var camera = SceneManager.get_camera_marker()
footstep_sfx.stop()
# 吕萍: “是到了吗,师傅”
# 车夫: “到了芦昌路26弄3号就是这里”
# 6句
# 车夫: “嗯,钱正好,那么我先跑了”
DialogueManager.show_dialogue_balloon(
dialogue_c01, "c01_s11_车夫对话4", [GlobalConfig.DIALOG_IGNORE_INPUT]
)
# 运镜 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(3.0)
tween.tween_callback(camera.tween_zoom.bind(0.7, 3.0))
tween.tween_property(marker, "global_position:y", target_y, building_duration)
tween.tween_callback(_show_chapter)
# 展示章节转场
func _show_chapter():
chapter_sfx.play()
SceneManager.pop_center_texture(chapter_title)
get_tree().create_timer(3.5).timeout.connect(_transition)
func _transition():
SceneManager.get_ground_loader().transition_to_scene("c02_s01", "left")