完成 c01s11 黄包车演出

This commit is contained in:
cakipaul 2025-01-29 22:05:27 +08:00
parent 14ce06e02a
commit b2fe64c433
29 changed files with 597 additions and 86 deletions

View File

@ -1,5 +1,5 @@
{ {
"workbench.colorTheme":"Bluloco Dark Godot", "workbench.colorTheme":"Monospace Light",
"editor.fontFamily": "'Consolas'", "editor.fontFamily": "'Consolas'",
"editor.fontSize": 13, "editor.fontSize": 13,
"debug.console.fontSize": 13, "debug.console.fontSize": 13,

View File

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

View File

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://oq5ci80mkhih" uid="uid://oq5ci80mkhih"
path="res://.godot/imported/f_动画字幕1-05.png-0557e772ddfbb44f861f897554f6ee86.ctex" path="res://.godot/imported/f_动画字幕2.png-e5adbc73519cec234743e79532fc50f2.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://asset/art/scene/c01/s04_旧版序章/f_动画字幕1-05.png" source_file="res://asset/art/scene/c01/s04_旧版序章/f_动画字幕2.png"
dest_files=["res://.godot/imported/f_动画字幕1-05.png-0557e772ddfbb44f861f897554f6ee86.ctex"] dest_files=["res://.godot/imported/f_动画字幕2.png-e5adbc73519cec234743e79532fc50f2.ctex"]
[params] [params]

View File

Before

Width:  |  Height:  |  Size: 114 KiB

After

Width:  |  Height:  |  Size: 114 KiB

View File

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dcjx3dqetfeqq" uid="uid://dcjx3dqetfeqq"
path="res://.godot/imported/f_动画字幕1-06.png-1c93dc8e8c2ad06654144e97b0a0b535.ctex" path="res://.godot/imported/f_动画字幕3.png-8e03f829d8ae44d43a82894743457788.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://asset/art/scene/c01/s04_旧版序章/f_动画字幕1-06.png" source_file="res://asset/art/scene/c01/s04_旧版序章/f_动画字幕3.png"
dest_files=["res://.godot/imported/f_动画字幕1-06.png-1c93dc8e8c2ad06654144e97b0a0b535.ctex"] dest_files=["res://.godot/imported/f_动画字幕3.png-8e03f829d8ae44d43a82894743457788.ctex"]
[params] [params]

View File

@ -20,62 +20,6 @@
=> END => END
~ c01_s04_车夫对话1
吕萍: “又是这个梦” [ID:c01_吕萍与车夫_01]
吕萍: “这个星期已经第三次了” [ID:c01_吕萍与车夫_02]
吕萍: “我到底是怎么了” [ID:c01_吕萍与车夫_03]
车夫: “小姐,你没事吧?” [ID:c01_吕萍与车夫_04]
吕萍: “啊?哦我没事” [ID:c01_吕萍与车夫_05]
吕萍: “师傅,刚刚什么事情啊?” [ID:c01_吕萍与车夫_06]
车夫: “人没事就好” [ID:c01_吕萍与车夫_07]
车夫: “刚有几个小孩儿突然从路边窜出来” [ID:c01_吕萍与车夫_08]
车夫: “还好我刹住了,大过年差点触霉头” [ID:c01_吕萍与车夫_09]
车夫: “不好意思,耽误你时间了” [ID:c01_吕萍与车夫_10]
吕萍: “没事没事,我其实也没有......那么赶时间” [ID:c01_吕萍与车夫_11]
车夫: “哈哈,小姐你坐好了,跑了“ [ID:c01_吕萍与车夫_12]
=> END
~ c01_s04_车夫对话2
车夫: “小姐,你这是回家过年是哇?” [ID:c01_吕萍与车夫_13]
=> END
~ c01_s04_车夫对话3
吕萍: “哦,不是的......” [ID:c01_吕萍与车夫_14]
=> END
~ c01_s04_车夫对话4
车夫: “啊?不会是工作吧” [ID:c01_吕萍与车夫_15]
=> END
~ c01_s04_车夫对话5
车夫: “这不行的,你这小年夜还要安排工作啊” [ID:c01_吕萍与车夫_16]
车夫: “你看我,拉完你这一趟,我也要准备收工了” [ID:c01_吕萍与车夫_17]
车夫: “工作什么的,今天肯定要统统结束掉的,你说对哇” [ID:c01_吕萍与车夫_18]
车夫: “这小年夜不行么,还有大年夜的呀” [ID:c01_吕萍与车夫_19]
车夫: “到时候回去和家里人一起好好吃个年夜饭” [ID:c01_吕萍与车夫_20]
车夫: “时间也差不多” [ID:c01_吕萍与车夫_21]
=> END
~ c01_s04_车夫对话6
吕萍: “......” [ID:c01_吕萍与车夫_22]
=> END
~ c01_s04_车夫对话7
吕萍: “是到了吗,师傅” [ID:c01_吕萍与车夫_23]
=> END
~ c01_s04_车夫对话8
车夫: “到了芦昌路26弄3号就是这里” [ID:c01_吕萍与车夫_24]
=> END
~ c01_s04_车夫对话9
车夫: “嗯,钱正好,那么我先跑了” [ID:c01_吕萍与车夫_25]
吕萍: “好的,谢谢师傅” [ID:c01_吕萍与车夫_26]
车夫: “哎哟,谢什么” [ID:c01_吕萍与车夫_27]
车夫: “哦,位子上这份信是你的吧,别忘记了” [ID:c01_吕萍与车夫_28]
吕萍: “对的对的,差点就忘记了,谢谢师傅,新年快乐” [ID:c01_吕萍与车夫_29]
车夫: “新年快乐” [ID:c01_吕萍与车夫_30]
=> END
~ c01_s05_院长房间_开场 ~ c01_s05_院长房间_开场
吕萍: (念诵夜行船——)[#wait=4] [ID:c01_s05_夜行船1] 吕萍: (念诵夜行船——)[#wait=4] [ID:c01_s05_夜行船1]
@ -96,3 +40,46 @@
小蝶: 啊! [#wait=0.5] [ID:c01_s06_谈论鬼差8] 小蝶: 啊! [#wait=0.5] [ID:c01_s06_谈论鬼差8]
小胖孩: (台词设计)3...2...1... [#wait=3] [ID:c01_s06_谈论鬼差9] 小胖孩: (台词设计)3...2...1... [#wait=3] [ID:c01_s06_谈论鬼差9]
=> END => END
~ c01_s11_车夫对话1
吕萍: “又是这个梦” [ID:c01_吕萍与车夫_01]
吕萍: “这个星期已经第三次了” [ID:c01_吕萍与车夫_02]
吕萍: “我到底是怎么了” [ID:c01_吕萍与车夫_03]
车夫: “小姐,你没事吧?” [ID:c01_吕萍与车夫_04]
吕萍: “啊?哦我没事” [ID:c01_吕萍与车夫_05]
吕萍: “师傅,刚刚什么事情啊?” [ID:c01_吕萍与车夫_06]
车夫: “人没事就好” [ID:c01_吕萍与车夫_07]
车夫: “刚有几个小孩儿突然从路边窜出来” [ID:c01_吕萍与车夫_08]
车夫: “还好我刹住了,大过年差点触霉头” [ID:c01_吕萍与车夫_09]
车夫: “不好意思,耽误你时间了” [ID:c01_吕萍与车夫_10]
吕萍: “没事没事,我其实也没有......那么赶时间” [ID:c01_吕萍与车夫_11]
车夫: “哈哈,小姐你坐好了,跑了“ [ID:c01_吕萍与车夫_12]
=> END
~ c01_s11_车夫对话2
车夫: “小姐,你这是回家过年是哇?” [ID:c01_吕萍与车夫_13]
吕萍: “哦,不是的......” [ID:c01_吕萍与车夫_14]
车夫: “啊?不会是工作吧” [ID:c01_吕萍与车夫_15]
=> END
~ c01_s11_车夫对话3
车夫: “这不行的,你这小年夜还要安排工作啊” [ID:c01_吕萍与车夫_16]
车夫: “你看我,拉完你这一趟,我也要准备收工了” [ID:c01_吕萍与车夫_17]
车夫: “工作什么的,今天肯定要统统结束掉的,你说对哇” [ID:c01_吕萍与车夫_18]
车夫: “这小年夜不行么,还有大年夜的呀” [ID:c01_吕萍与车夫_19]
车夫: “到时候回去和家里人一起好好吃个年夜饭” [ID:c01_吕萍与车夫_20]
车夫: “时间也差不多” [ID:c01_吕萍与车夫_21]
吕萍: “......” [ID:c01_吕萍与车夫_22]
=> END
~ c01_s11_车夫对话4
吕萍: “是到了吗,师傅” [ID:c01_吕萍与车夫_23]
车夫: “到了芦昌路26弄3号就是这里” [ID:c01_吕萍与车夫_24]
车夫: “嗯,钱正好,那么我先跑了” [ID:c01_吕萍与车夫_25]
吕萍: “好的,谢谢师傅” [ID:c01_吕萍与车夫_26]
车夫: “哎哟,谢什么” [ID:c01_吕萍与车夫_27]
车夫: “哦,位子上这份信是你的吧,别忘记了” [ID:c01_吕萍与车夫_28]
吕萍: “对的对的,差点就忘记了,谢谢师傅,新年快乐” [ID:c01_吕萍与车夫_29]
车夫: “新年快乐” [ID:c01_吕萍与车夫_30]
=> END

View File

@ -38,6 +38,7 @@ ui_auto_saved,自动保存成功,,,,
ui_press_e,按 E 与场景互动,,,, ui_press_e,按 E 与场景互动,,,,
ui_press_b,按 B 打开背包,,,, ui_press_b,按 B 打开背包,,,,
ui_press_shift,按住 Shift 奔跑,,,, ui_press_shift,按住 Shift 奔跑,,,,
input_拼凑信件,按 E 旋转,方向键移动,,,,
ui_获得,获得,,,, ui_获得,获得,,,,
ui_退出,退出,Exit,,, ui_退出,退出,Exit,,,
ui_阅读,阅读,Read,,, ui_阅读,阅读,Read,,,

1 keys zh_CN en _character _notes _tags
38 ui_press_e 按 E 与场景互动
39 ui_press_b 按 B 打开背包
40 ui_press_shift 按住 Shift 奔跑
41 input_拼凑信件 按 E 旋转,方向键移动
42 ui_获得 获得
43 ui_退出 退出 Exit
44 ui_阅读 阅读 Read

View File

@ -22,6 +22,7 @@
按 E 与场景互动 [ID:ui_press_e] 按 E 与场景互动 [ID:ui_press_e]
按 B 打开背包 [ID:ui_press_b] 按 B 打开背包 [ID:ui_press_b]
按住 Shift 奔跑 [ID:ui_press_shift] 按住 Shift 奔跑 [ID:ui_press_shift]
按 E 旋转,方向键移动 [ID:input_拼凑信件]
获得 [ID:ui_获得] 获得 [ID:ui_获得]
退出 [ID:ui_退出] 退出 [ID:ui_退出]

View File

@ -1411,7 +1411,7 @@ animations = [{
"duration": 1.0, "duration": 1.0,
"texture": ExtResource("115_ct7bj") "texture": ExtResource("115_ct7bj")
}], }],
"loop": true, "loop": false,
"name": &"c01_捡球男孩_关键帧", "name": &"c01_捡球男孩_关键帧",
"speed": 8.0 "speed": 8.0
}, { }, {

View File

@ -14,8 +14,8 @@
[ext_resource type="Texture2D" uid="uid://dgvu4jvbimpvs" path="res://asset/art/scene/c01/s04_旧版序章/e_树.png" id="12_tccdj"] [ext_resource type="Texture2D" uid="uid://dgvu4jvbimpvs" path="res://asset/art/scene/c01/s04_旧版序章/e_树.png" id="12_tccdj"]
[ext_resource type="Texture2D" uid="uid://dc07t8oud2dhv" path="res://asset/art/scene/c01/s04_旧版序章/e_轿车.png" id="13_1plt5"] [ext_resource type="Texture2D" uid="uid://dc07t8oud2dhv" path="res://asset/art/scene/c01/s04_旧版序章/e_轿车.png" id="13_1plt5"]
[ext_resource type="Texture2D" uid="uid://b0f00retoqxyc" path="res://asset/art/scene/c01/s04_旧版序章/f_动画字幕1.png" id="14_vao82"] [ext_resource type="Texture2D" uid="uid://b0f00retoqxyc" path="res://asset/art/scene/c01/s04_旧版序章/f_动画字幕1.png" id="14_vao82"]
[ext_resource type="Texture2D" uid="uid://oq5ci80mkhih" path="res://asset/art/scene/c01/s04_旧版序章/f_动画字幕1-05.png" id="15_bqgqw"] [ext_resource type="Texture2D" uid="uid://oq5ci80mkhih" path="res://asset/art/scene/c01/s04_旧版序章/f_动画字幕2.png" id="15_bqgqw"]
[ext_resource type="Texture2D" uid="uid://dcjx3dqetfeqq" path="res://asset/art/scene/c01/s04_旧版序章/f_动画字幕1-06.png" id="16_o1kwd"] [ext_resource type="Texture2D" uid="uid://dcjx3dqetfeqq" path="res://asset/art/scene/c01/s04_旧版序章/f_动画字幕3.png" id="16_o1kwd"]
[ext_resource type="Texture2D" uid="uid://bppjrbdqm37k3" path="res://asset/art/scene/c01/s04_旧版序章/f_第一章标题.png" id="17_0dtov"] [ext_resource type="Texture2D" uid="uid://bppjrbdqm37k3" path="res://asset/art/scene/c01/s04_旧版序章/f_第一章标题.png" id="17_0dtov"]
[ext_resource type="Texture2D" uid="uid://cjllurf1ouxf" path="res://asset/art/scene/c01/s04_旧版序章/fg_前景1.png" id="18_n1rqy"] [ext_resource type="Texture2D" uid="uid://cjllurf1ouxf" path="res://asset/art/scene/c01/s04_旧版序章/fg_前景1.png" id="18_n1rqy"]
[ext_resource type="Texture2D" uid="uid://c2rex8f1hh5xf" path="res://asset/art/scene/c01/s04_旧版序章/fg_前景2.png" id="19_1jd4o"] [ext_resource type="Texture2D" uid="uid://c2rex8f1hh5xf" path="res://asset/art/scene/c01/s04_旧版序章/fg_前景2.png" id="19_1jd4o"]

View File

@ -173,6 +173,10 @@ func pop_notification(msg: String, number := 1) -> void:
var notification_node = get_node_or_null("/root/Main/UILayer/Notification") var notification_node = get_node_or_null("/root/Main/UILayer/Notification")
if notification_node: if notification_node:
notification_node.show_notification(msg, number) notification_node.show_notification(msg, number)
elif GlobalConfig.DEBUG:
# debug 模式,新建一个
var n = _create_debug_notification()
n.call_deferred("show_notification", msg, number)
else: else:
printerr("pop_notification: Notification node not found") printerr("pop_notification: Notification node not found")
@ -181,10 +185,41 @@ func pop_center_notification(msg: String) -> void:
var notification_node = get_node_or_null("/root/Main/UILayer/Notification") var notification_node = get_node_or_null("/root/Main/UILayer/Notification")
if notification_node: if notification_node:
notification_node.show_center_notification(msg) notification_node.show_center_notification(msg)
elif GlobalConfig.DEBUG:
# debug 模式,新建一个
var n = _create_debug_notification()
n.call_deferred("show_center_notification", msg)
else: else:
printerr("pop_center_notification: Notification node not found") printerr("pop_center_notification: Notification node not found")
func pop_center_texture(texture: Texture2D, duration := 3.5) -> void:
var notification_node = get_node_or_null("/root/Main/UILayer/Notification")
if notification_node:
notification_node.show_center_texture(texture, duration)
elif GlobalConfig.DEBUG:
# debug 模式,新建一个
var n = _create_debug_notification()
n.call_deferred("show_center_texture", texture)
else:
printerr("pop_center_texture: Notification node not found")
# debug 模式,新建一个 notification node
func _create_debug_notification() -> Notification:
if not GlobalConfig.DEBUG:
return null
var main = get_node_or_null("/root/Main")
if not main:
main = Control.new()
main.set_anchors_preset(Control.PRESET_FULL_RECT)
main.name = "Main"
get_tree().root.call_deferred("add_child", main)
var n = preload("res://scene/notification/notification.tscn").instantiate()
main.add_child(n)
return n
func pop_dialog( func pop_dialog(
character: String, character: String,
content: String, content: String,

View File

@ -19,16 +19,21 @@ script = ExtResource("1_0vrlo")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."] [node name="AnimationPlayer" type="AnimationPlayer" parent="."]
[node name="BGColorRect" type="ColorRect" parent="."] [node name="CanvasLayer" type="CanvasLayer" parent="."]
layer = -1
offset = Vector2(0, -159)
transform = Transform2D(1, 0, 0, 1, 0, -159)
[node name="BGColorRect" type="ColorRect" parent="CanvasLayer"]
z_index = -10 z_index = -10
custom_minimum_size = Vector2(664, 318) custom_minimum_size = Vector2(664, 318)
anchors_preset = 4 anchors_preset = 4
anchor_top = 0.5 anchor_top = 0.5
anchor_bottom = 0.5 anchor_bottom = 0.5
offset_left = -50.0 offset_left = -50.0
offset_top = -159.0 offset_top = -158.0
offset_right = 614.0 offset_right = 614.0
offset_bottom = 159.0 offset_bottom = 160.0
grow_vertical = 2 grow_vertical = 2
mouse_filter = 2 mouse_filter = 2
color = Color(0, 0, 0, 1) color = Color(0, 0, 0, 1)

View File

@ -219,4 +219,5 @@ func _on_resources_reload(res):
print("resources_reload processing:", res) print("resources_reload processing:", res)
if not Engine.is_editor_hint() and res.ends_with(".tscn"): if not Engine.is_editor_hint() and res.ends_with(".tscn"):
ArchiveManager.save_all() ArchiveManager.save_all()
first_entered = true
transition_to_scene(current_scene, entrance_portal, true) transition_to_scene(current_scene, entrance_portal, true)

View File

@ -285,7 +285,7 @@ frame = 3
autostart = false autostart = false
move_configs = Array[Dictionary]([{ move_configs = Array[Dictionary]([{
"animation": &"【墙上黑猫】跑步", "animation": &"【墙上黑猫】跑步",
"velocity": Vector2(180, 0) "velocity": Vector2(220, 0)
}]) }])
[node name="猫鼠游戏开始ambush" parent="Ground/DeployLayer" index="16" instance=ExtResource("11_tudob")] [node name="猫鼠游戏开始ambush" parent="Ground/DeployLayer" index="16" instance=ExtResource("11_tudob")]

View File

@ -0,0 +1,17 @@
@tool
extends AnimationRoot
# 覆盖该方法
func _default_data() -> Dictionary:
return {}
func _ready() -> void:
super._ready()
if Engine.is_editor_hint():
return
func _on_ground_ready() -> void:
pass

View File

@ -1,6 +1,7 @@
[gd_scene load_steps=3 format=3 uid="uid://ds2iyfndwamiy"] [gd_scene load_steps=4 format=3 uid="uid://ds2iyfndwamiy"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_kbldb"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_kbldb"]
[ext_resource type="Script" path="res://scene/ground/scene/c01/s07_animation.gd" id="2_0xomc"]
[sub_resource type="LabelSettings" id="LabelSettings_7adaf"] [sub_resource type="LabelSettings" id="LabelSettings_7adaf"]
font_size = 20 font_size = 20
@ -10,6 +11,10 @@ font_size = 20
[node name="Ground" parent="." instance=ExtResource("1_kbldb")] [node name="Ground" parent="." instance=ExtResource("1_kbldb")]
scene_name = "c01_s07" scene_name = "c01_s07"
[node name="AnimationPlayer" parent="Ground" index="0"]
script = ExtResource("2_0xomc")
oneshot_animation = ""
[node name="portal_right" parent="Ground/DeployLayer" index="1"] [node name="portal_right" parent="Ground/DeployLayer" index="1"]
immediately = false immediately = false
target_scene = "c02_s08" target_scene = "c02_s08"

View File

@ -0,0 +1,17 @@
@tool
extends AnimationRoot
# 覆盖该方法
func _default_data() -> Dictionary:
return {}
func _ready() -> void:
super._ready()
if Engine.is_editor_hint():
return
func _on_ground_ready() -> void:
pass

View File

@ -1,6 +1,7 @@
[gd_scene load_steps=3 format=3 uid="uid://cwu4dhayra8pg"] [gd_scene load_steps=4 format=3 uid="uid://cwu4dhayra8pg"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_b3cca"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_b3cca"]
[ext_resource type="Script" path="res://scene/ground/scene/c01/s08_animation.gd" id="2_0lque"]
[sub_resource type="LabelSettings" id="LabelSettings_7adaf"] [sub_resource type="LabelSettings" id="LabelSettings_7adaf"]
font_size = 20 font_size = 20
@ -10,6 +11,9 @@ font_size = 20
[node name="Ground" parent="." instance=ExtResource("1_b3cca")] [node name="Ground" parent="." instance=ExtResource("1_b3cca")]
scene_name = "c01_s08" scene_name = "c01_s08"
[node name="AnimationPlayer" parent="Ground" index="0"]
script = ExtResource("2_0lque")
[node name="portal_right" parent="Ground/DeployLayer" index="1"] [node name="portal_right" parent="Ground/DeployLayer" index="1"]
immediately = false immediately = false
target_scene = "c02_s08" target_scene = "c02_s08"

View File

@ -0,0 +1,17 @@
@tool
extends AnimationRoot
# 覆盖该方法
func _default_data() -> Dictionary:
return {}
func _ready() -> void:
super._ready()
if Engine.is_editor_hint():
return
func _on_ground_ready() -> void:
pass

View File

@ -1,7 +1,8 @@
[gd_scene load_steps=4 format=3 uid="uid://c777lv8mjojcw"] [gd_scene load_steps=5 format=3 uid="uid://c777lv8mjojcw"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_mrwu5"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_mrwu5"]
[ext_resource type="PackedScene" uid="uid://ci34db7xool2n" path="res://scene/ground/script/c01/s01_自动枯萎的花朵.tscn" id="2_shnte"] [ext_resource type="PackedScene" uid="uid://ci34db7xool2n" path="res://scene/ground/script/c01/s01_自动枯萎的花朵.tscn" id="2_shnte"]
[ext_resource type="Script" path="res://scene/ground/scene/c01/s09_animation.gd" id="2_u053j"]
[sub_resource type="LabelSettings" id="LabelSettings_7adaf"] [sub_resource type="LabelSettings" id="LabelSettings_7adaf"]
font_size = 20 font_size = 20
@ -11,6 +12,9 @@ font_size = 20
[node name="Ground" parent="." instance=ExtResource("1_mrwu5")] [node name="Ground" parent="." instance=ExtResource("1_mrwu5")]
scene_name = "c01_s09" scene_name = "c01_s09"
[node name="AnimationPlayer" parent="Ground" index="0"]
script = ExtResource("2_u053j")
[node name="portal_right" parent="Ground/DeployLayer" index="1"] [node name="portal_right" parent="Ground/DeployLayer" index="1"]
immediately = false immediately = false
target_scene = "c02_s08" target_scene = "c02_s08"

View File

@ -0,0 +1,17 @@
@tool
extends AnimationRoot
# 覆盖该方法
func _default_data() -> Dictionary:
return {}
func _ready() -> void:
super._ready()
if Engine.is_editor_hint():
return
func _on_ground_ready() -> void:
pass

View File

@ -1,6 +1,7 @@
[gd_scene load_steps=3 format=3 uid="uid://be57l2o3vxxtm"] [gd_scene load_steps=4 format=3 uid="uid://be57l2o3vxxtm"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_hhs2q"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_hhs2q"]
[ext_resource type="Script" path="res://scene/ground/scene/c01/s10_animation.gd" id="2_4kx83"]
[sub_resource type="LabelSettings" id="LabelSettings_7adaf"] [sub_resource type="LabelSettings" id="LabelSettings_7adaf"]
font_size = 20 font_size = 20
@ -10,6 +11,9 @@ font_size = 20
[node name="Ground" parent="." instance=ExtResource("1_hhs2q")] [node name="Ground" parent="." instance=ExtResource("1_hhs2q")]
scene_name = "c01_s10" scene_name = "c01_s10"
[node name="AnimationPlayer" parent="Ground" index="0"]
script = ExtResource("2_4kx83")
[node name="portal_right" parent="Ground/DeployLayer" index="1"] [node name="portal_right" parent="Ground/DeployLayer" index="1"]
immediately = false immediately = false
target_scene = "c02_s08" target_scene = "c02_s08"

View File

@ -0,0 +1,123 @@
@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 := 9550.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
play("intro")
# ## test 测试最后运镜 ##
# main_character.global_position.x = target_x
# call_deferred("_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:
DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s11_车夫对话1")
DialogueManager.dialogue_ended.connect(_start_running, CONNECT_ONE_SHOT)
func _start_running(_res = null):
main_character.play("c01_车夫_running")
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")
# 6句
# 车夫: “这不行的,你这小年夜还要安排工作啊”
# 吕萍: “......”
func dialog3() -> void:
DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s11_车夫对话3")
func _on_finished():
SceneManager.get_camera_marker().limit_bottom = 158
SceneManager.get_camera_marker().limit_top = -1000
footstep_sfx.stop()
# 吕萍: “是到了吗,师傅”
# 车夫: “到了芦昌路26弄3号就是这里”
# 6句
# 车夫: “嗯,钱正好,那么我先跑了”
DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s11_车夫对话4")
# 运镜 marker
var marker = Node2D.new()
get_parent().add_child(marker)
main_character.play("c01_车夫_idle")
marker.global_position = main_character.global_position
var target_y = marker.global_position.y - building_y
var camera = SceneManager.get_camera_marker()
camera.focus_node(marker)
camera.shake_enabled = true
camera.shake_strength = 0.5
camera.shake_recovery_speed = 4.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", false)

View File

@ -0,0 +1,244 @@
[gd_scene load_steps=18 format=3 uid="uid://coiumaaenimbc"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_1sveo"]
[ext_resource type="Texture2D" uid="uid://xiul48vc10fx" path="res://asset/art/scene/c01/s04_旧版序章/bg_底图带楼.png" id="2_e846h"]
[ext_resource type="Script" path="res://scene/ground/scene/c01/s11_animation.gd" id="2_espm6"]
[ext_resource type="Texture2D" uid="uid://cjllurf1ouxf" path="res://asset/art/scene/c01/s04_旧版序章/fg_前景1.png" id="3_fduds"]
[ext_resource type="SpriteFrames" uid="uid://b7fhheih1hbvf" path="res://config/animation/entity_sprite_frames.tres" id="3_hnnuc"]
[ext_resource type="Texture2D" uid="uid://dgvu4jvbimpvs" path="res://asset/art/scene/c01/s04_旧版序章/e_树.png" id="3_ivvgx"]
[ext_resource type="AudioStream" uid="uid://qu38tv548jhj" path="res://asset/audio/sfx/c01/拉黄包车_loop.wav" id="3_ummkx"]
[ext_resource type="Script" path="res://scene/entity/general/sfx.gd" id="3_vx53v"]
[ext_resource type="Texture2D" uid="uid://qbwh5si2owve" path="res://asset/art/scene/c01/s04_旧版序章/fg_前景3.png" id="4_1flr0"]
[ext_resource type="Texture2D" uid="uid://dc07t8oud2dhv" path="res://asset/art/scene/c01/s04_旧版序章/e_轿车.png" id="4_vaqc6"]
[ext_resource type="AudioStream" uid="uid://deexnwq1bkv6x" path="res://asset/audio/sfx/c01/序章标题出现.wav" id="5_nrdt8"]
[ext_resource type="Texture2D" uid="uid://c2rex8f1hh5xf" path="res://asset/art/scene/c01/s04_旧版序章/fg_前景2.png" id="5_rbgqg"]
[ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="6_3k8jj"]
[sub_resource type="Animation" id="Animation_yijw1"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("DeployLayer/小孩捡球:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("DeployLayer/小孩捡球:offset")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, 0)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("DeployLayer/小孩捡球:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
[sub_resource type="Animation" id="Animation_blie8"]
resource_name = "intro"
length = 10.0
capture_included = true
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("DeployLayer/小孩捡球:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 7.73333),
"transitions": PackedFloat32Array(1, 1),
"update": 2,
"values": [0, 60]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("DeployLayer/小孩捡球:offset")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.0333333, 4.93333, 7.76667),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector2(0, 0), Vector2(0, 0), Vector2(200, 0)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("DeployLayer/小孩捡球:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 7.8),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [true, false]
}
tracks/3/type = "method"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("AnimationPlayer")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(4.63333),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"dialog1"
}]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_6ojod"]
_data = {
"RESET": SubResource("Animation_yijw1"),
"intro": SubResource("Animation_blie8")
}
[sub_resource type="RectangleShape2D" id="RectangleShape2D_b0oon"]
size = Vector2(200, 100)
[node name="S11" type="Node2D"]
[node name="Ground" parent="." instance=ExtResource("1_1sveo")]
scene_name = "c01_s11"
player_y = 40
[node name="AnimationPlayer" parent="Ground" index="0"]
libraries = {
"": SubResource("AnimationLibrary_6ojod")
}
script = ExtResource("2_espm6")
oneshot_animation = ""
[node name="黄包车Sfx" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="0"]
stream = ExtResource("3_ummkx")
bus = &"game_sfx"
script = ExtResource("3_vx53v")
dir = "c01"
file = "拉黄包车_loop.wav"
[node name="chapter_sfx" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"]
stream = ExtResource("5_nrdt8")
bus = &"game_sfx"
script = ExtResource("3_vx53v")
dir = "c01"
file = "序章标题出现.wav"
[node name="BGSprite2D" parent="Ground" index="2"]
position = Vector2(0, 6)
texture = ExtResource("2_e846h")
offset = Vector2(0, -624)
[node name="portal_left" parent="Ground/DeployLayer" index="0"]
position = Vector2(95, 40)
[node name="portal_right" parent="Ground/DeployLayer" index="1"]
immediately = false
target_scene = "c02_s01"
[node name="车夫与吕萍" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="2"]
position = Vector2(161, 51)
sprite_frames = ExtResource("3_hnnuc")
animation = &"c01_车夫_idle"
autoplay = "c01_车夫_idle"
[node name="Area2D" type="Area2D" parent="Ground/DeployLayer/车夫与吕萍"]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Ground/DeployLayer/车夫与吕萍/Area2D"]
shape = SubResource("RectangleShape2D_b0oon")
[node name="小孩捡球" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="3"]
position = Vector2(461, 80)
sprite_frames = ExtResource("3_hnnuc")
animation = &"c01_捡球男孩_关键帧"
autoplay = "c01_捡球男孩_关键帧"
[node name="ambush_title1" parent="Ground/DeployLayer" index="4" instance=ExtResource("6_3k8jj")]
position = Vector2(1569, 21)
trigger_mode = "area_enter"
one_shot = false
freeze_time = 1.0
hook_method = "pop_title_1"
[node name="ambush_title2" parent="Ground/DeployLayer" index="5" instance=ExtResource("6_3k8jj")]
position = Vector2(4730, 11)
trigger_mode = "area_enter"
one_shot = false
hook_method = "pop_title_2"
[node name="ambush_title3" parent="Ground/DeployLayer" index="6" instance=ExtResource("6_3k8jj")]
position = Vector2(5527, 2)
trigger_mode = "area_enter"
one_shot = false
hook_method = "pop_title_3"
[node name="ambush_dialog2" parent="Ground/DeployLayer" index="7" instance=ExtResource("6_3k8jj")]
position = Vector2(1956, 5)
trigger_mode = "area_enter"
one_shot = false
hook_method = "dialog2"
[node name="ambush_dialog3" parent="Ground/DeployLayer" index="8" instance=ExtResource("6_3k8jj")]
position = Vector2(5009, -15)
trigger_mode = "area_enter"
one_shot = false
hook_method = "dialog3"
[node name="MainPlayer" parent="Ground" index="5"]
visible = false
position = Vector2(26, 118)
character = "小小蝶"
action_locked = true
action_freezed = true
[node name="CameraFocusMarker" parent="Ground" index="6" node_paths=PackedStringArray("focusing_node")]
focusing_node = NodePath("../DeployLayer/车夫与吕萍")
force_offset = Vector2(50, -48)
[node name="Sprite2D" type="Sprite2D" parent="Ground/ParallaxForeground/BGParallaxLayer" index="0"]
position = Vector2(3556, 6)
texture = ExtResource("3_ivvgx")
[node name="Sprite2D2" type="Sprite2D" parent="Ground/ParallaxForeground/BGParallaxLayer" index="1"]
position = Vector2(2549, 60)
texture = ExtResource("4_vaqc6")
[node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"]
position = Vector2(871, -143)
scale = Vector2(1.18, 1.18)
texture = ExtResource("3_fduds")
[node name="Sprite2D3" type="Sprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="1"]
unique_name_in_owner = true
position = Vector2(4867, -134)
scale = Vector2(1.14, 1.14)
texture = ExtResource("4_1flr0")
centered = false
[node name="Sprite2D2" type="Sprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="2"]
unique_name_in_owner = true
position = Vector2(6924, 31)
texture = ExtResource("5_rbgqg")
centered = false
[editable path="Ground"]

View File

@ -12,8 +12,8 @@ func _ready() -> void:
if Engine.is_editor_hint(): if Engine.is_editor_hint():
return return
if not data["received_letter"]: if not data["received_letter"]:
SceneManager.freeze_player(0.5) SceneManager.freeze_player(1.5)
get_tree().create_timer(0.5).timeout.connect(_give_letter) get_tree().create_timer(1.5).timeout.connect(_give_letter)
elif GlobalConfig.DEBUG: elif GlobalConfig.DEBUG:
print("_give_letter 已发放") print("_give_letter 已发放")

View File

@ -19,6 +19,7 @@ func _ready() -> void:
_shuffle() _shuffle()
_display_selected() _display_selected()
whole.visible = false whole.visible = false
SceneManager.pop_center_notification(tr("input_拼凑信件"))
func _select_part(part) -> void: func _select_part(part) -> void:

View File

@ -62,11 +62,6 @@ mouse_filter = 2
color = Color(0, 0, 0, 1) color = Color(0, 0, 0, 1)
[node name="Notification" parent="UILayer" instance=ExtResource("5_3gg5t")] [node name="Notification" parent="UILayer" instance=ExtResource("5_3gg5t")]
offset_left = -12.0
offset_top = -2.0
offset_right = -12.0
offset_bottom = -2.0
metadata/_edit_use_anchors_ = true
[node name="PropHUD" parent="UILayer" instance=ExtResource("4_t7gb2")] [node name="PropHUD" parent="UILayer" instance=ExtResource("4_t7gb2")]
scale = Vector2(0.24, 0.24) scale = Vector2(0.24, 0.24)

View File

@ -1,7 +1,8 @@
extends Control class_name Notification extends Control
@onready var top_right_label := %RichTextLabel as RichTextLabel @onready var top_right_label := %RichTextLabel as RichTextLabel
@onready var top_center_label := %CenterLabel as Label @onready var top_center_label := %CenterLabel as Label
@onready var center_texture := %CenterTexture as TextureRect
var pending_notifications = [] var pending_notifications = []
var tweening_top_left := false var tweening_top_left := false
@ -10,6 +11,7 @@ var tweening_top_left := false
func _ready() -> void: func _ready() -> void:
top_right_label.modulate.a = 0 top_right_label.modulate.a = 0
top_center_label.modulate.a = 0 top_center_label.modulate.a = 0
center_texture.modulate.a = 0
# # test notification in editor # # test notification in editor
@ -27,6 +29,16 @@ func _ready() -> void:
# show_notification(tr("ui_saved_all"), 1) # show_notification(tr("ui_saved_all"), 1)
func show_center_texture(texture, duration := 3.0):
if not center_texture:
return
center_texture.texture = texture
var tween = create_tween()
tween.tween_property(center_texture, "modulate:a", 1, 0.4)
tween.tween_interval(max(0.1, duration - .8))
tween.tween_property(center_texture, "modulate:a", 0, 0.4)
func show_center_notification(msg, duration := 3.0): func show_center_notification(msg, duration := 3.0):
if not top_center_label: if not top_center_label:
return return

View File

@ -1,7 +1,8 @@
[gd_scene load_steps=4 format=3 uid="uid://5g07x6q7wwr1"] [gd_scene load_steps=5 format=3 uid="uid://5g07x6q7wwr1"]
[ext_resource type="Script" path="res://scene/notification/notification.gd" id="1_j0g80"] [ext_resource type="Script" path="res://scene/notification/notification.gd" id="1_j0g80"]
[ext_resource type="FontFile" uid="uid://dr8bp6p7byb37" path="res://asset/font/字体/方正楷体简体.TTF" id="2_eh7gu"] [ext_resource type="FontFile" uid="uid://dr8bp6p7byb37" path="res://asset/font/字体/方正楷体简体.TTF" id="2_eh7gu"]
[ext_resource type="Texture2D" uid="uid://b0f00retoqxyc" path="res://asset/art/scene/c01/s04_旧版序章/f_动画字幕1.png" id="3_wqejl"]
[sub_resource type="LabelSettings" id="LabelSettings_ycsas"] [sub_resource type="LabelSettings" id="LabelSettings_ycsas"]
font = ExtResource("2_eh7gu") font = ExtResource("2_eh7gu")
@ -48,9 +49,9 @@ layout_mode = 1
anchors_preset = 5 anchors_preset = 5
anchor_left = 0.5 anchor_left = 0.5
anchor_right = 0.5 anchor_right = 0.5
offset_left = -20.0 offset_left = -40.0
offset_right = 20.0 offset_right = 40.0
offset_bottom = 40.0 offset_bottom = 75.0
grow_horizontal = 2 grow_horizontal = 2
mouse_filter = 2 mouse_filter = 2
theme_override_constants/margin_top = 52 theme_override_constants/margin_top = 52
@ -60,3 +61,23 @@ unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
text = "互动提示" text = "互动提示"
label_settings = SubResource("LabelSettings_ycsas") label_settings = SubResource("LabelSettings_ycsas")
[node name="MarginContainer3" type="MarginContainer" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_left = 32
theme_override_constants/margin_top = 64
theme_override_constants/margin_right = 32
theme_override_constants/margin_bottom = 64
[node name="CenterTexture" type="TextureRect" parent="MarginContainer3"]
unique_name_in_owner = true
layout_mode = 2
mouse_filter = 2
texture = ExtResource("3_wqejl")
expand_mode = 1
stretch_mode = 5