From 4bf519aa1d3c3a2a151b9b3e58fe300eb7b8c049 Mon Sep 17 00:00:00 2001 From: cakipaul Date: Thu, 30 Jan 2025 12:50:52 +0800 Subject: [PATCH] =?UTF-8?q?=E9=83=A8=E7=BD=B2c01=E4=B8=8Ec02=E5=9C=BA?= =?UTF-8?q?=E6=99=AF=E8=8D=89=E7=A8=BF=EF=BC=9B=E5=AE=8C=E5=96=84=E9=97=A8?= =?UTF-8?q?=E7=9A=84=E5=BC=80=E9=94=81=E7=8A=B6=E6=80=81=E8=BD=AC=E6=8D=A2?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{ux_衔接阴影.png => bg_衔接阴影.png} | Bin ...接阴影.png.import => bg_衔接阴影.png.import} | 6 +- asset/dialogue/item_description.csv | 5 +- asset/dialogue/item_description.dialogue | 9 +- config/art/static_sprite_frames.tres | 2 +- scene/dialog/balloon.tscn | 2 +- scene/entity/ambush.gd | 18 +- scene/entity/local_inspectable.gd | 15 +- scene/entity/partical/particals_ash.tscn | 34 ++-- scene/entity/portal.gd | 160 +++++++++++++++--- scene/entity/portal.tscn | 49 +++++- scene/ground/ground.gd | 38 +++-- scene/ground/ground.tscn | 16 +- scene/ground/scene/c01/s05_院长房间.tscn | 2 + .../ground/scene/c01/s06_孤儿院长廊围墙.tscn | 4 + scene/ground/scene/c01/s08_书店.tscn | 1 + scene/ground/scene/c01/s09_公寓楼外.tscn | 1 + scene/ground/scene/c01/s10_公寓楼道.tscn | 1 + scene/ground/scene/c01/s11_黄包车演出.tscn | 5 +- scene/ground/scene/c02/s01_街道.tscn | 20 ++- scene/ground/scene/c02/s02_animation.gd | 18 +- scene/ground/scene/c02/s02_走道.tscn | 10 +- scene/ground/scene/c02/s03_院子切换.tscn | 5 +- scene/ground/scene/c02/s04_animation.gd | 17 ++ scene/ground/scene/c02/s04_院子现实版.tscn | 57 +++++++ .../ground/scene/c02/s05_1012外间现实版.tscn | 42 +++++ scene/ground/scene/c02/s05_animation.gd | 17 ++ scene/ground/scene/c02/s06_animation.gd | 17 ++ scene/ground/scene/c02/s06_院子回忆版.tscn | 37 ++++ scene/ground/scene/c02/s07_animation.gd | 17 ++ scene/ground/scene/c02/s07_过道回忆版.tscn | 25 +++ .../ground/scene/c02/s08_1012外间回忆版.tscn | 40 +++++ scene/ground/scene/c02/s08_animation.gd | 17 ++ scene/ground/scene/c02/s09_1014现实版.tscn | 31 ++++ scene/ground/scene/c02/s09_animation.gd | 17 ++ scene/ground/scene/c02/s10_animation.gd | 17 ++ scene/ground/scene/c02/s10_裂缝通道.tscn | 47 +++++ scene/ground/scene/c02/s11_3014回忆版.tscn | 49 ++++++ scene/ground/scene/c02/s11_animation.gd | 30 ++++ scene/ground/scene/c02/s12_1014诡异版.tscn | 58 +++++++ scene/ground/scene/c02/s12_animation.gd | 17 ++ scene/ground/scene/c02/s13_animation.gd | 17 ++ scene/ground/scene/c02/s13_院子诡异版.tscn | 36 ++++ scene/ground/scene/c02/s14_animation.gd | 17 ++ scene/ground/scene/c02/s14_过道诡异版.tscn | 38 +++++ scene/ground/scene/c02/s15_1014家具版.tscn | 38 +++++ scene/ground/scene/c02/s15_animation.gd | 17 ++ 47 files changed, 1035 insertions(+), 101 deletions(-) rename asset/art/scene/c02/s12_1014诡异版/{ux_衔接阴影.png => bg_衔接阴影.png} (100%) rename asset/art/scene/c02/s12_1014诡异版/{ux_衔接阴影.png.import => bg_衔接阴影.png.import} (69%) create mode 100644 scene/ground/scene/c02/s04_animation.gd create mode 100644 scene/ground/scene/c02/s04_院子现实版.tscn create mode 100644 scene/ground/scene/c02/s05_1012外间现实版.tscn create mode 100644 scene/ground/scene/c02/s05_animation.gd create mode 100644 scene/ground/scene/c02/s06_animation.gd create mode 100644 scene/ground/scene/c02/s06_院子回忆版.tscn create mode 100644 scene/ground/scene/c02/s07_animation.gd create mode 100644 scene/ground/scene/c02/s07_过道回忆版.tscn create mode 100644 scene/ground/scene/c02/s08_1012外间回忆版.tscn create mode 100644 scene/ground/scene/c02/s08_animation.gd create mode 100644 scene/ground/scene/c02/s09_1014现实版.tscn create mode 100644 scene/ground/scene/c02/s09_animation.gd create mode 100644 scene/ground/scene/c02/s10_animation.gd create mode 100644 scene/ground/scene/c02/s10_裂缝通道.tscn create mode 100644 scene/ground/scene/c02/s11_3014回忆版.tscn create mode 100644 scene/ground/scene/c02/s11_animation.gd create mode 100644 scene/ground/scene/c02/s12_1014诡异版.tscn create mode 100644 scene/ground/scene/c02/s12_animation.gd create mode 100644 scene/ground/scene/c02/s13_animation.gd create mode 100644 scene/ground/scene/c02/s13_院子诡异版.tscn create mode 100644 scene/ground/scene/c02/s14_animation.gd create mode 100644 scene/ground/scene/c02/s14_过道诡异版.tscn create mode 100644 scene/ground/scene/c02/s15_1014家具版.tscn create mode 100644 scene/ground/scene/c02/s15_animation.gd diff --git a/asset/art/scene/c02/s12_1014诡异版/ux_衔接阴影.png b/asset/art/scene/c02/s12_1014诡异版/bg_衔接阴影.png similarity index 100% rename from asset/art/scene/c02/s12_1014诡异版/ux_衔接阴影.png rename to asset/art/scene/c02/s12_1014诡异版/bg_衔接阴影.png diff --git a/asset/art/scene/c02/s12_1014诡异版/ux_衔接阴影.png.import b/asset/art/scene/c02/s12_1014诡异版/bg_衔接阴影.png.import similarity index 69% rename from asset/art/scene/c02/s12_1014诡异版/ux_衔接阴影.png.import rename to asset/art/scene/c02/s12_1014诡异版/bg_衔接阴影.png.import index d511302f..43acf398 100644 --- a/asset/art/scene/c02/s12_1014诡异版/ux_衔接阴影.png.import +++ b/asset/art/scene/c02/s12_1014诡异版/bg_衔接阴影.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://ddcburr57lb75" -path="res://.godot/imported/ux_衔接阴影.png-f9d8dfbf375ec0d6a0c01c639e85132c.ctex" +path="res://.godot/imported/bg_衔接阴影.png-fd65f8c37c929ec1095b02c4814d8e4c.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://asset/art/scene/c02/s12_1014诡异版/ux_衔接阴影.png" -dest_files=["res://.godot/imported/ux_衔接阴影.png-f9d8dfbf375ec0d6a0c01c639e85132c.ctex"] +source_file="res://asset/art/scene/c02/s12_1014诡异版/bg_衔接阴影.png" +dest_files=["res://.godot/imported/bg_衔接阴影.png-fd65f8c37c929ec1095b02c4814d8e4c.ctex"] [params] diff --git a/asset/dialogue/item_description.csv b/asset/dialogue/item_description.csv index b7225ceb..f6add9a6 100644 --- a/asset/dialogue/item_description.csv +++ b/asset/dialogue/item_description.csv @@ -42,6 +42,7 @@ input_拼凑信件,按 E 旋转,方向键移动,,,, ui_获得,获得,,,, ui_退出,退出,Exit,,, ui_阅读,阅读,Read,,, +ui_检阅,检阅,,,, ui_收起,收起,Hold,,, ui_夜行船1,百岁光阴一梦蝶。,,,, ui_夜行船2,重回⾸往事堪嗟。,,,, @@ -76,14 +77,14 @@ c01_倾斜的洋相片,洋相片,,,, c01_摆正的洋相片,是院长的女儿吗,,,, c01_s06_院长房间,这是院长的房间,,,, c01_s06_小朋友房间,这是其他小朋友的房间,,,, -c02_绳子剪刀,绳子和剪刀,,,, c02_寻人启事,"似乎是一张寻人启事 脸的部分被撕掉了,看不清",,,, -c02_玩具缺脑袋,这个玩具缺了个脑袋,,,, c02_卫生宣传画,几张卫生宣传画,,,, c02_老鼠洞,"一个老鼠洞 在这种楼里挺常见的",,,, c02_十几年前的报纸,十几年前的报纸,,,, +c02_绳子剪刀,绳子和剪刀,,,, +c02_玩具缺脑袋,这个玩具缺了个脑袋,,,, c02_又是寻人启示,又是那张寻人启示,,,, c02_墙上的海报被撕掉了,墙上的海报被撕掉了,,,, c02_井臭,井里有一股臭味,,,, diff --git a/asset/dialogue/item_description.dialogue b/asset/dialogue/item_description.dialogue index e77dd429..d3763d61 100644 --- a/asset/dialogue/item_description.dialogue +++ b/asset/dialogue/item_description.dialogue @@ -27,8 +27,10 @@ 获得 [ID:ui_获得] 退出 [ID:ui_退出] 阅读 [ID:ui_阅读] +检阅 [ID:ui_检阅] 收起 [ID:ui_收起] + 百岁光阴一梦蝶。 [ID:ui_夜行船1] 重回⾸往事堪嗟。 [ID:ui_夜行船2] 今⽇春来。明朝花谢。 [ID:ui_夜行船3] @@ -76,12 +78,15 @@ 这是其他小朋友的房间 [ID:c01_s06_小朋友房间] # c02 -绳子和剪刀 [ID:c02_绳子剪刀] +# c02-s01 街道 似乎是一张寻人启事\n脸的部分被撕掉了,看不清 [ID:c02_寻人启事] -这个玩具缺了个脑袋 [ID:c02_玩具缺脑袋] +# c02-s02 走道 几张卫生宣传画 [ID:c02_卫生宣传画] 一个老鼠洞\n在这种楼里挺常见的 [ID:c02_老鼠洞] 十几年前的报纸 [ID:c02_十几年前的报纸] + +绳子和剪刀 [ID:c02_绳子剪刀] +这个玩具缺了个脑袋 [ID:c02_玩具缺脑袋] 又是那张寻人启示 [ID:c02_又是寻人启示] 墙上的海报被撕掉了 [ID:c02_墙上的海报被撕掉了] 井里有一股臭味 [ID:c02_井臭] diff --git a/config/art/static_sprite_frames.tres b/config/art/static_sprite_frames.tres index 83c0e1f2..4835134a 100644 --- a/config/art/static_sprite_frames.tres +++ b/config/art/static_sprite_frames.tres @@ -108,7 +108,7 @@ [ext_resource type="Texture2D" uid="uid://bjvungu3tb155" path="res://asset/art/scene/c02/s12_1014诡异版/fg_1014前景.png" id="106_2h1ja"] [ext_resource type="Texture2D" uid="uid://dcy3tf4td481s" path="res://asset/art/scene/c02/s12_1014诡异版/ux_恐怖幻境纸条1.png" id="107_lwdop"] [ext_resource type="Texture2D" uid="uid://ctswav7aw2vvb" path="res://asset/art/scene/c02/s12_1014诡异版/ux_恐怖幻境纸条2.png" id="108_1bjaj"] -[ext_resource type="Texture2D" uid="uid://ddcburr57lb75" path="res://asset/art/scene/c02/s12_1014诡异版/ux_衔接阴影.png" id="109_xkscu"] +[ext_resource type="Texture2D" uid="uid://ddcburr57lb75" path="res://asset/art/scene/c02/s12_1014诡异版/bg_衔接阴影.png" id="109_xkscu"] [ext_resource type="Texture2D" uid="uid://da3v7s68728af" path="res://asset/art/scene/c02/s13_院子诡异版/bg_院子1楼(黑).png" id="110_1h1mj"] [ext_resource type="Texture2D" uid="uid://bgflt8ivx1fmp" path="res://asset/art/scene/c02/s13_院子诡异版/e_1014门锁.png" id="111_tgctv"] [ext_resource type="Texture2D" uid="uid://dec0rudexctcs" path="res://asset/art/scene/c02/s13_院子诡异版/e_掉着小猫的绳子.png" id="112_lw5wp"] diff --git a/scene/dialog/balloon.tscn b/scene/dialog/balloon.tscn index 83924192..55d7e435 100644 --- a/scene/dialog/balloon.tscn +++ b/scene/dialog/balloon.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=10 format=3 uid="uid://73jm5qjy52vq"] +[gd_scene load_steps=10 format=3 uid="uid://cb4s8y1y600og"] [ext_resource type="Script" path="res://scene/dialog/balloon.gd" id="1_36de5"] [ext_resource type="PackedScene" uid="uid://ckvgyvclnwggo" path="res://addons/dialogue_manager/dialogue_label.tscn" id="2_a8ve6"] diff --git a/scene/entity/ambush.gd b/scene/entity/ambush.gd index 6f2028bb..4f3a4758 100644 --- a/scene/entity/ambush.gd +++ b/scene/entity/ambush.gd @@ -64,6 +64,11 @@ var played: bool: # Called when the node enters the scene tree for the first time. func _ready() -> void: + # setup default value + ground_archive = ArchiveManager.archive.ground_archive() + played = ground_archive.get_value(name, "played", false) + played_time = 0.0 + sign_mark.enabled = enabled _check_sign_display() if Engine.is_editor_hint(): var animation_player = _get_animation_player() @@ -73,23 +78,20 @@ func _ready() -> void: return if played: if GlobalConfig.DEBUG: - print("Ambush has played, name=", name) - return + print("Ambush has played, name=", name, " one_shot=", one_shot) + if one_shot: + return if on_first_enter_tree: _entered(null) sign_mark.interacted.connect(_interacted) area.body_entered.connect(_entered) area.area_entered.connect(_area_entered) - sign_mark.enabled = enabled - # setup default value - ground_archive = ArchiveManager.archive.ground_archive() - played = ground_archive.get_value(name, "played", false) - played_time = 0.0 func _check_sign_display(): sign_mark.display_sign = trigger_mode == "interact" and (not one_shot or not played) - + if one_shot and played: + sign_mark.enabled = false func _get_animation_player() -> AnimationPlayer: var node = get_parent() diff --git a/scene/entity/local_inspectable.gd b/scene/entity/local_inspectable.gd index 36d02023..f97211fa 100644 --- a/scene/entity/local_inspectable.gd +++ b/scene/entity/local_inspectable.gd @@ -28,7 +28,8 @@ var content_key: String = "" @onready var content_label = %ContentLabel as Label @onready var tip_label = %TipLabel as Label -var tip_cover = "Q: " + tr("ui_退出") + " " + "E: " + tr("ui_阅读") +var tip_cover_hide_notes = "Q: " + tr("ui_退出") + " " + "E: " + tr("ui_阅读") +var tip_cover_without_notes = "Q: " + tr("ui_退出") + " " + "E: " + tr("ui_检阅") var tip_notes = "Q: " + tr("ui_退出") + " " + "E: " + tr("ui_收起") static var content_dialogue = ( @@ -43,7 +44,7 @@ func _ready() -> void: $InspectLayer.layer = GlobalConfig.CANVAS_LAYER_PROP_INSPECTOR container.modulate.a = 0.0 content_label.text = _get_tr_content() - tip_label.text = tip_cover + tip_label.text = tip_cover_hide_notes cover_rect.texture = texture_cover if Engine.is_editor_hint(): return @@ -79,7 +80,10 @@ func _on_interacted() -> void: sign_mark.display_sign = false SceneManager.freeze_player(0.0, PlayerAnimationConfig.ACTION_LOOKUP_WALL) cover_rect.texture = texture_cover - tip_label.text = tip_cover + if content_key == "": + tip_label.text = tip_cover_without_notes + else: + tip_label.text = tip_cover_hide_notes _blink_label(true) start_inspecting.emit() elif status == STATUS_INSPECTING_COVER: @@ -90,7 +94,10 @@ func _on_interacted() -> void: elif status == STATUS_INSPECTING_NOTES: sfx.play() status = STATUS_INSPECTING_COVER - tip_label.text = tip_cover + if content_key == "": + tip_label.text = tip_cover_without_notes + else: + tip_label.text = tip_cover_hide_notes create_tween().tween_property(container, "modulate:a", 0.0, 0.15) diff --git a/scene/entity/partical/particals_ash.tscn b/scene/entity/partical/particals_ash.tscn index 2f707ca6..0bec5939 100644 --- a/scene/entity/partical/particals_ash.tscn +++ b/scene/entity/partical/particals_ash.tscn @@ -21,13 +21,13 @@ curve = SubResource("Curve_sbmii") [sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_44bc2"] particle_flag_disable_z = true emission_shape = 3 -emission_box_extents = Vector3(-5, 100, 1) -direction = Vector3(-50, -2, 0) -spread = 35.0 -initial_velocity_min = 5.0 -initial_velocity_max = 10.0 +emission_box_extents = Vector3(-100, 200, 1) +direction = Vector3(-100, 0, 0) +spread = 10.0 +initial_velocity_min = 10.0 +initial_velocity_max = 20.0 angular_velocity_min = -10.0 -angular_velocity_max = 20.0 +angular_velocity_max = 9.99998 angular_velocity_curve = SubResource("CurveTexture_uoprq") gravity = Vector3(0, 0, 0) scale_min = 0.1 @@ -112,9 +112,10 @@ color_ramp = SubResource("GradientTexture1D_5cty7") amount = 150 process_material = SubResource("ParticleProcessMaterial_44bc2") texture = ExtResource("1_lv5jb") -lifetime = 100.0 -preprocess = 50.0 -visibility_rect = Rect2(0, -130, -1500, 260) +lifetime = 200.0 +preprocess = 100.0 +speed_scale = 2.0 +visibility_rect = Rect2(0, -130, -5000, 260) trail_sections = 16 metadata/_edit_vertical_guides_ = [-721.0] @@ -122,18 +123,19 @@ metadata/_edit_vertical_guides_ = [-721.0] amount = 200 process_material = SubResource("ParticleProcessMaterial_3xiox") texture = ExtResource("2_wgqpb") -lifetime = 100.0 -preprocess = 51.0 -speed_scale = 1.2 -visibility_rect = Rect2(0, -130, -1500, 260) +lifetime = 200.0 +preprocess = 100.0 +speed_scale = 2.0 +visibility_rect = Rect2(0, -130, -5000, 260) trail_sections = 16 [node name="black" type="GPUParticles2D" parent="."] amount = 180 process_material = SubResource("ParticleProcessMaterial_wa8gc") texture = ExtResource("3_abc1v") -lifetime = 100.0 -preprocess = 52.0 -visibility_rect = Rect2(0, -130, -1500, 260) +lifetime = 200.0 +preprocess = 100.0 +speed_scale = 2.0 +visibility_rect = Rect2(0, -130, -5000, 260) trail_enabled = true trail_sections = 16 diff --git a/scene/entity/portal.gd b/scene/entity/portal.gd index 702767db..49a0e90c 100644 --- a/scene/entity/portal.gd +++ b/scene/entity/portal.gd @@ -1,10 +1,11 @@ @tool class_name Portal2D extends Sprite2D +@export_multiline var debug_note: String = "" @export var enabled := true: set(val): enabled = val - _check_sign_mark() + _check_sign_mark_and_texture() @export var immediately := true @export_enum("left", "right", "1", "2", "3", "4", "5", "6", "7", "8", "9") var portal_name := "left": set(value): @@ -18,58 +19,125 @@ class_name Portal2D extends Sprite2D var target_portal := "none": set(value): target_portal = value - _check_sign_mark() + _check_sign_mark_and_texture() +@export_enum("default", "locked", "opened") var status := "default": + set(value): + status = value + # 只在编辑器模式下检查 + if is_node_ready() and Engine.is_editor_hint(): + _check_sign_mark_and_texture() @export var default_texture: Texture2D @export var opened_texture: Texture2D -@export var opened := false: - set(new_val): - opened = new_val - _checkout_texture() +@export var default_sign_texture: Texture2D +@export var opened_sign_texture: Texture2D +@export var matched_sign_texture: Texture2D +@export var closed_sign_texture: Texture2D +var prop_key := "" +@export var disable_key_after_used := true -@onready var sfx = %Sfx as Sfx +# 穿过通道的音效 +@onready var sfx_default = %SfxDefault as Sfx +# 开锁的音效 +@onready var sfx_open = %SfxOpen as Sfx +# 进门的音效 +@onready var sfx_enter = %SfxEnter as Sfx +# 门被锁定,无法打开的音效 +@onready var sfx_locked = %SfxLocked as Sfx @onready var sign_mark = %Sign as Sign @onready var area2d = %Area2D as Area2D var activated := false -var action_times := 0 + +static var item_config_res = preload("res://asset/dialogue/item_description.dialogue") +var items: PackedStringArray + +var ground_archive: GroundArchive # Called when the node enters the scene tree for the first time. func _ready() -> void: name = "portal_" + portal_name - _checkout_texture() - _check_sign_mark() if Engine.is_editor_hint(): + _check_sign_mark_and_texture() + _reload_items() return + ground_archive = ArchiveManager.archive.ground_archive() + status = ground_archive.get_value(name, "status", status) + if GlobalConfig.DEBUG: + print("Portal read status [", name, "] status=", status) + _check_sign_mark_and_texture() area2d.body_entered.connect(_reset) area2d.body_exited.connect(_on_cancel) sign_mark.interacted.connect(_on_interacted) sign_mark.cancel.connect(_on_cancel) - # if GlobalConfig.DEBUG: - # var label = Label.new() - # label.text = portal_name - # label.name = "Label" - # add_child(label) -func _checkout_texture(): - if opened and opened_texture: - texture = opened_texture - else: - texture = default_texture -func _check_sign_mark(): +func _reload_items() -> void: + items.clear() + var id = item_config_res.titles["PropItems"] + var current_line = item_config_res.lines[id] + while current_line: + if current_line.has("translation_key"): + items.append(current_line.translation_key) + if not current_line.has("next_id") or current_line.next_id == "end": + break + current_line = item_config_res.lines[current_line.next_id] + notify_property_list_changed() + + +func _check_sign_mark_and_texture(): if not is_node_ready(): return + if status == "opened" and opened_texture: + texture = opened_texture + elif default_texture: + texture = default_texture + match status: + "locked": + sign_mark.sprite2d.texture = closed_sign_texture + "opened": + sign_mark.sprite2d.texture = opened_sign_texture + "default": + sign_mark.sprite2d.texture = default_sign_texture if target_portal == "none" or not enabled: sign_mark.enabled = false else: sign_mark.enabled = true + +var interact_mutex = Mutex.new() + + func _on_interacted() -> void: - if target_portal == "none": + if target_portal == "none" or not enabled: + return + interact_mutex.lock() + if status == "locked": + # 检查是否有钥匙,尝试打开 + var key = SceneManager.get_current_prop(false) + if prop_key and key == prop_key: + sfx_open.global_play() + status = "opened" + ground_archive.set_pair(name, "status", status) + if disable_key_after_used: + SceneManager.disable_prop_item(key) + else: + sfx_locked.global_play() + sign_mark.invalid_shake() + _check_sign_mark_and_texture() + interact_mutex.unlock() + # 开锁尝试后,哪怕开锁成功,也需要下次操作再进入,而不是立即传送 return # 传送,queue free 导致 sfx 无法播放,使用全局声源 - sfx.global_play() + if status == "default": + sfx_default.global_play() + elif status == "opened": + sfx_enter.global_play() + else: + sfx_locked.global_play() + interact_mutex.unlock() + return + interact_mutex.unlock() if GlobalConfig.DEBUG: print("传送前往", target_scene, target_portal, " immediately=", immediately) var ground_loader = SceneManager.get_ground_loader() as GroundLoader @@ -79,12 +147,34 @@ func _on_interacted() -> void: func _on_cancel(_body = null): activated = false + # disconnect signal + var prop_hud = SceneManager.get_prop_hud() as PropHud + if prop_hud and prop_hud.current_item_changed.is_connected(_set_sign_texture_to_prop): + prop_hud.current_item_changed.disconnect(_set_sign_texture_to_prop) func _reset(_body): + _check_sign_mark_and_texture() activated = true + if status == "locked": + var key = SceneManager.get_current_prop(false) + if key: + _set_sign_texture_to_prop(key) + var prop_hud = SceneManager.get_prop_hud() as PropHud + if not prop_hud.current_item_changed.is_connected(_set_sign_texture_to_prop): + prop_hud.current_item_changed.connect(_set_sign_texture_to_prop) + + +# 根据当前 prop,调整 sign 所显示的 texture +func _set_sign_texture_to_prop(key): + if not prop_key or prop_key == key: + sign_mark.sprite2d.texture = matched_sign_texture + else: + sign_mark.sprite2d.texture = closed_sign_texture + # 暂时不启用自动传送 +# var action_times := 0 # func _input(event: InputEvent) -> void: # # 长按自动传送 # if activated: @@ -108,3 +198,27 @@ func _reset(_body): # action_times = 0 # %Sfx.play() # _on_interacted() + + +func _get_property_list() -> Array[Dictionary]: + return [ + { + "name": "prop_key", + "type": TYPE_STRING, + "hint": PROPERTY_HINT_ENUM_SUGGESTION, + "hint_string": ",".join(items), + } + ] + + +func _get(property: StringName) -> Variant: + if property == "prop_key": + return prop_key + return null + + +func _set(property: StringName, value: Variant) -> bool: + if property == "prop_key": + prop_key = value + return true + return false diff --git a/scene/entity/portal.tscn b/scene/entity/portal.tscn index ee152bb9..610d7543 100644 --- a/scene/entity/portal.tscn +++ b/scene/entity/portal.tscn @@ -1,10 +1,30 @@ -[gd_scene load_steps=7 format=3 uid="uid://61pis75a8fdq"] +[gd_scene load_steps=15 format=3 uid="uid://61pis75a8fdq"] [ext_resource type="Script" path="res://scene/entity/portal.gd" id="1_jyh6v"] [ext_resource type="Texture2D" uid="uid://bc4lpa8aao60n" path="res://asset/art/ui/action_mark/传送.png" id="2_ay30q"] [ext_resource type="PackedScene" uid="uid://c85t6stvytvjn" path="res://scene/entity/general/sfx.tscn" id="3_6khux"] [ext_resource type="AudioStream" uid="uid://bqh3at8fbi75s" path="res://asset/audio/sfx/ui/页面转换声.wav" id="3_lluer"] [ext_resource type="PackedScene" uid="uid://c4tipnj1cr1j3" path="res://scene/entity/ux/sign.tscn" id="4_ty1ds"] +[ext_resource type="Texture2D" uid="uid://b343nvvbtpglb" path="res://asset/art/ui/互动提示符/ui 像素版_纯白.png" id="5_3s5wu"] +[ext_resource type="AudioStream" uid="uid://ccng5y2fip6mc" path="res://asset/audio/sfx/ui/开锁声.mp3" id="5_l48hy"] +[ext_resource type="AudioStream" uid="uid://c7k1gohcfiyg3" path="res://asset/audio/sfx/ui/开门.mp3" id="6_icbmu"] +[ext_resource type="AudioStream" uid="uid://inmdv5gqqius" path="res://asset/audio/sfx/ui/门锁互动.mp3" id="7_bjcty"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_20tmu"] +atlas = ExtResource("5_3s5wu") +region = Rect2(495, 84, 39, 39) + +[sub_resource type="AtlasTexture" id="AtlasTexture_nnhgo"] +atlas = ExtResource("5_3s5wu") +region = Rect2(495, 267, 39, 39) + +[sub_resource type="AtlasTexture" id="AtlasTexture_l8twy"] +atlas = ExtResource("5_3s5wu") +region = Rect2(480, 468, 63, 63) + +[sub_resource type="AtlasTexture" id="AtlasTexture_lxo3t"] +atlas = ExtResource("5_3s5wu") +region = Rect2(762, 468, 63, 63) [sub_resource type="RectangleShape2D" id="RectangleShape2D_munml"] resource_local_to_scene = true @@ -12,22 +32,43 @@ size = Vector2(25, 130) [node name="portal_left" type="Sprite2D"] script = ExtResource("1_jyh6v") +default_sign_texture = SubResource("AtlasTexture_20tmu") +opened_sign_texture = SubResource("AtlasTexture_nnhgo") +matched_sign_texture = SubResource("AtlasTexture_l8twy") +closed_sign_texture = SubResource("AtlasTexture_lxo3t") +prop_key = "" -[node name="Sfx" parent="." instance=ExtResource("3_6khux")] +[node name="SfxDefault" parent="." instance=ExtResource("3_6khux")] unique_name_in_owner = true stream = ExtResource("3_lluer") file = "页面转换声.wav" +[node name="SfxOpen" parent="." instance=ExtResource("3_6khux")] +unique_name_in_owner = true +stream = ExtResource("5_l48hy") +file = "开锁声.mp3" + +[node name="SfxEnter" parent="." instance=ExtResource("3_6khux")] +unique_name_in_owner = true +stream = ExtResource("6_icbmu") +file = "开门.mp3" + +[node name="SfxLocked" parent="." instance=ExtResource("3_6khux")] +unique_name_in_owner = true +stream = ExtResource("7_bjcty") +file = "门锁互动.mp3" + [node name="Sign" parent="." instance=ExtResource("4_ty1ds")] unique_name_in_owner = true +modulate = Color(1, 1, 1, 0) offset_top = -47.0 offset_right = 347.0 offset_bottom = 287.0 -scale = Vector2(0.05, 0.05) +enabled = false [node name="Sprite2D" parent="Sign/TextureContainer" index="0"] position = Vector2(0, 10) -texture = ExtResource("2_ay30q") +texture = SubResource("AtlasTexture_20tmu") [node name="PointLight2D" type="PointLight2D" parent="."] unique_name_in_owner = true diff --git a/scene/ground/ground.gd b/scene/ground/ground.gd index 1cf6f404..42f3b99b 100644 --- a/scene/ground/ground.gd +++ b/scene/ground/ground.gd @@ -21,7 +21,6 @@ var default_portal := "left" replace_player_to_portal = false if is_node_ready(): move_player_to_portal(default_portal) - _reset_player_y() @export_group("Sound") @export_enum("none", "ghost", "walking", "running", "crawling", "concrete") var footstep_type: String = "concrete": @@ -30,6 +29,7 @@ var footstep_type: String = "concrete": if is_node_ready(): _load_footstep_audio() +@onready var player_line = %PlayerLine2D as Line2D @onready var player = %MainPlayer as MainPlayer @onready var directional_light := %DirectionalLight2D as DirectionalLight2D @onready var bg_sprite = %BGSprite2D as Sprite2D @@ -56,6 +56,13 @@ func _ready() -> void: if GlobalConfig.DEBUG and (not Engine.is_editor_hint()) and (not get_parent() is GroundLoader): call_deferred("_restart_from_main") return + # bg layer 位置,在编辑器中显示在正后方 + if Engine.is_editor_hint(): + $BGLayer.offset.y = -159 + else: + $BGLayer.offset.y = 0 + # 隐藏 player_line + player_line.visible = false # 检查 scene_name 是否合法 scene_name = scene_name.strip_edges() if get_parent().name.begins_with("S") and (not scene_name or scene_name.length() != 7): @@ -99,21 +106,23 @@ func _reset_player_y(): func _set_camera_and_player_boundary(): # set current_boarder by bg size + var camera_rect = Rect2(0, -158, 564, 316) + var player_rect = Rect2(0, -158, 564, 316) if bg_sprite.texture and not Engine.is_editor_hint(): var size = bg_sprite.texture.get_size() * bg_sprite.scale # camera rect - var camera_size = Vector2(max(564.0, size.x), max(size.y, 316.0)) + var camera_size = size + camera_size.x += bg_sprite.position.x + camera_size = Vector2(max(564.0, camera_size.x), max(camera_size.y, 316.0)) var camera_upleft = Vector2(0, -camera_size.y / 2.0) - var camera_rect = Rect2(camera_upleft, camera_size) - # player rect should be set centered, with 30px x padding - var up_left = Vector2(0, -size.y / 2.0) - size.x -= 36.0 - up_left.x = bg_sprite.position.x + 18.0 - var player_rect = Rect2(up_left, size) - SceneManager.set_camera_boundary(camera_rect) - SceneManager.set_player_boundary(player_rect) - if GlobalConfig.DEBUG: - print("_set_camera_and_player_boundary:", camera_rect, player_rect) + camera_rect = Rect2(camera_upleft, camera_size) + # player rect should be set centered, with 30px x padding + player_rect.position.x = player_line.get_point_position(0).x + player_rect.size.x = player_line.get_point_position(1).x - player_rect.position.x + SceneManager.set_camera_boundary(camera_rect) + SceneManager.set_player_boundary(player_rect) + if GlobalConfig.DEBUG: + print("_set_camera_and_player_boundary:", camera_rect, player_rect) func _load_footstep_audio(): @@ -133,6 +142,11 @@ func move_player_to_portal(portal_name: String) -> void: var portal_node = get_node_or_null("DeployLayer/portal_" + portal_name) as Node2D if portal_node: player.global_position.x = portal_node.global_position.x + if portal_name == "left": + player.set_facing_direction(Vector2.RIGHT) + elif portal_name == "right": + player.set_facing_direction(Vector2.LEFT) + _reset_player_y() if GlobalConfig.DEBUG: print("move player to portal:", portal_name, portal_node.global_position) else: diff --git a/scene/ground/ground.tscn b/scene/ground/ground.tscn index bdbd9826..01570d30 100644 --- a/scene/ground/ground.tscn +++ b/scene/ground/ground.tscn @@ -19,12 +19,12 @@ script = ExtResource("1_0vrlo") [node name="AnimationPlayer" type="AnimationPlayer" parent="."] -[node name="CanvasLayer" type="CanvasLayer" parent="."] +[node name="BGLayer" type="CanvasLayer" parent="."] layer = -1 offset = Vector2(0, -159) transform = Transform2D(1, 0, 0, 1, 0, -159) -[node name="BGColorRect" type="ColorRect" parent="CanvasLayer"] +[node name="BGColorRect" type="ColorRect" parent="BGLayer"] z_index = -10 custom_minimum_size = Vector2(664, 318) anchors_preset = 4 @@ -48,17 +48,17 @@ offset = Vector2(0, -120) unique_name_in_owner = true [node name="portal_left" parent="DeployLayer" instance=ExtResource("3_t73yw")] -position = Vector2(26, -1) +position = Vector2(41, 6) [node name="portal_right" parent="DeployLayer" instance=ExtResource("3_t73yw")] -position = Vector2(530, 0) +position = Vector2(518, 6) portal_name = "right" [node name="AmbientLayer" type="Node2D" parent="."] [node name="MainPlayer" parent="." node_paths=PackedStringArray("camera_marker") instance=ExtResource("3_atha7")] unique_name_in_owner = true -position = Vector2(26, 88) +position = Vector2(41, 88) camera_marker = NodePath("../CameraFocusMarker") [node name="CameraFocusMarker" parent="." node_paths=PackedStringArray("focusing_node") instance=ExtResource("4_mgk0a")] @@ -77,9 +77,13 @@ motion_scale = Vector2(1.1, 1.1) [node name="FGSprite2D" type="Sprite2D" parent="ParallaxForeground/FGParallaxLayer"] unique_name_in_owner = true -position = Vector2(-34, -118) texture = ExtResource("5_i5hii") centered = false +offset = Vector2(0, -120) + +[node name="PlayerLine2D" type="Line2D" parent="ParallaxForeground"] +unique_name_in_owner = true +points = PackedVector2Array(37, 150, 519, 150) [node name="SubViewportContainer" type="SubViewportContainer" parent="."] offset_right = 2256.0 diff --git a/scene/ground/scene/c01/s05_院长房间.tscn b/scene/ground/scene/c01/s05_院长房间.tscn index e4ba457b..99ea200e 100644 --- a/scene/ground/scene/c01/s05_院长房间.tscn +++ b/scene/ground/scene/c01/s05_院长房间.tscn @@ -724,11 +724,13 @@ texture_scale = 0.33 height = 50.0 [node name="MainPlayer" parent="Ground" index="5"] +position = Vector2(26, 88) character = "小小蝶" [node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] position = Vector2(21, 39) texture = ExtResource("3_vmr0f") +offset = Vector2(0, 0) [node name="SubViewportContainer" parent="Ground" index="8"] offset_top = -2.0 diff --git a/scene/ground/scene/c01/s06_孤儿院长廊围墙.tscn b/scene/ground/scene/c01/s06_孤儿院长廊围墙.tscn index 27974269..631bd5d8 100644 --- a/scene/ground/scene/c01/s06_孤儿院长廊围墙.tscn +++ b/scene/ground/scene/c01/s06_孤儿院长廊围墙.tscn @@ -423,6 +423,7 @@ sprite_frames = ExtResource("2_l4axy") animation = &"院长呼吸" [node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] +visible = false texture = null [node name="动态前景" parent="Ground/ParallaxForeground/FGParallaxLayer" index="1" instance=ExtResource("8_ouldg")] @@ -433,6 +434,9 @@ animation = &"fg_花圃" centered = false offset = Vector2(0, -159) +[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] +points = PackedVector2Array(37, 150, 3200, 150) + [node name="DirectionalLight2D" parent="Ground" index="9"] visible = false diff --git a/scene/ground/scene/c01/s08_书店.tscn b/scene/ground/scene/c01/s08_书店.tscn index abc644e5..0ab4cb8b 100644 --- a/scene/ground/scene/c01/s08_书店.tscn +++ b/scene/ground/scene/c01/s08_书店.tscn @@ -13,6 +13,7 @@ scene_name = "c01_s08" [node name="AnimationPlayer" parent="Ground" index="0"] script = ExtResource("2_0lque") +oneshot_animation = "" [node name="portal_right" parent="Ground/DeployLayer" index="1"] immediately = false diff --git a/scene/ground/scene/c01/s09_公寓楼外.tscn b/scene/ground/scene/c01/s09_公寓楼外.tscn index 02e7e842..24dd4823 100644 --- a/scene/ground/scene/c01/s09_公寓楼外.tscn +++ b/scene/ground/scene/c01/s09_公寓楼外.tscn @@ -14,6 +14,7 @@ scene_name = "c01_s09" [node name="AnimationPlayer" parent="Ground" index="0"] script = ExtResource("2_u053j") +oneshot_animation = "" [node name="portal_right" parent="Ground/DeployLayer" index="1"] immediately = false diff --git a/scene/ground/scene/c01/s10_公寓楼道.tscn b/scene/ground/scene/c01/s10_公寓楼道.tscn index a76d0e36..b0423975 100644 --- a/scene/ground/scene/c01/s10_公寓楼道.tscn +++ b/scene/ground/scene/c01/s10_公寓楼道.tscn @@ -13,6 +13,7 @@ scene_name = "c01_s10" [node name="AnimationPlayer" parent="Ground" index="0"] script = ExtResource("2_4kx83") +oneshot_animation = "" [node name="portal_right" parent="Ground/DeployLayer" index="1"] immediately = false diff --git a/scene/ground/scene/c01/s11_黄包车演出.tscn b/scene/ground/scene/c01/s11_黄包车演出.tscn index 9c876b28..fa9b89d9 100644 --- a/scene/ground/scene/c01/s11_黄包车演出.tscn +++ b/scene/ground/scene/c01/s11_黄包车演出.tscn @@ -224,7 +224,7 @@ position = Vector2(2549, 60) texture = ExtResource("4_vaqc6") [node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] -position = Vector2(871, -143) +position = Vector2(871, 0) scale = Vector2(1.18, 1.18) texture = ExtResource("3_fduds") @@ -241,4 +241,7 @@ position = Vector2(6924, 31) texture = ExtResource("5_rbgqg") centered = false +[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] +points = PackedVector2Array(37, 150, 10050, 150) + [editable path="Ground"] diff --git a/scene/ground/scene/c02/s01_街道.tscn b/scene/ground/scene/c02/s01_街道.tscn index cca337c2..9bf7dd35 100644 --- a/scene/ground/scene/c02/s01_街道.tscn +++ b/scene/ground/scene/c02/s01_街道.tscn @@ -1,15 +1,15 @@ -[gd_scene load_steps=6 format=3 uid="uid://bbs7yy5aofw1v"] +[gd_scene load_steps=5 format=3 uid="uid://bbs7yy5aofw1v"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_gdcov"] [ext_resource type="Texture2D" uid="uid://dibfvlmarlkg6" path="res://asset/art/scene/c02/s01_街道/bg_公寓入口.png" id="2_ni1a4"] [ext_resource type="Script" path="res://scene/ground/scene/c02/s01_animation.gd" id="2_uuwn3"] [ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="3_6lnxd"] -[ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="6_vgxa0"] [node name="S01" type="Node2D"] [node name="Ground" parent="." instance=ExtResource("1_gdcov")] scene_name = "c02_s01" +player_y = 55 [node name="AnimationPlayer" parent="Ground" index="0"] script = ExtResource("2_uuwn3") @@ -30,23 +30,25 @@ position = Vector2(392, 2) target_scene = "c02_s02" target_portal = "left" -[node name="Note" parent="Ground/DeployLayer" index="2" instance=ExtResource("3_6lnxd")] +[node name="Note寻人启事" parent="Ground/DeployLayer" index="2" instance=ExtResource("3_6lnxd")] position = Vector2(250, -22) -mode = null +title_filter = "c02" +note_key = "c02_寻人启事" [node name="Note门口" parent="Ground/DeployLayer" index="3" instance=ExtResource("3_6lnxd")] position = Vector2(311, -27) mode = "ballon" dialogue = "c02" - -[node name="Ambush" parent="Ground/DeployLayer" index="4" instance=ExtResource("6_vgxa0")] -position = Vector2(135, 56) -hook_method = null +title_filter = "c02" +note_key = "c02_s01_门口" [node name="MainPlayer" parent="Ground" index="5"] -position = Vector2(78, 88) +position = Vector2(78, 103) [node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] texture = null +[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] +points = PackedVector2Array(37, 150, 720, 150) + [editable path="Ground"] diff --git a/scene/ground/scene/c02/s02_animation.gd b/scene/ground/scene/c02/s02_animation.gd index cfe0d749..02bf1e8a 100644 --- a/scene/ground/scene/c02/s02_animation.gd +++ b/scene/ground/scene/c02/s02_animation.gd @@ -22,9 +22,12 @@ func _on_ground_ready() -> void: paper_man = $"../DeployLayer/Ambush纸人" paper_man.enabled = data.display_paper_man paper_man.visible = data.display_paper_man + paper_man.get_node("wall/CollisionShape2D").disabled = !data.display_paper_man func _oneshot_wind(): + SceneManager.get_player().global_position.x = 53 + SceneManager.get_player().set_facing_direction(Vector2.RIGHT) SceneManager.freeze_player(0) %MainPlayer.visible = false wind_blows.visible = true @@ -43,17 +46,18 @@ func _on_dialogue_ended(_res): SceneManager.release_player() +func lumber_interacted(): + SceneManager.pop_debug_dialog_info("美术", "杂物堆⾥有眼睛瞟向玩家/眨动,然后消失(动画)") + _display_paper_man() + + func _display_paper_man(): - data.display_paper_man = true - paper_man.enabled = true + set_data("display_paper_man", true) paper_man.visible = true + paper_man.enabled = true paper_man.get_node("Sfx").play() + paper_man.get_node("wall/CollisionShape2D").disabled = false func paper_man_interacted(): SceneManager.enable_prop_item("prop_1012钥匙") - - -func lumber_interacted(): - SceneManager.pop_debug_dialog_info("美术", "杂物堆⾥有眼睛瞟向玩家/眨动,然后消失(动画)") - _display_paper_man() diff --git a/scene/ground/scene/c02/s02_走道.tscn b/scene/ground/scene/c02/s02_走道.tscn index 235bc39d..93201e7e 100644 --- a/scene/ground/scene/c02/s02_走道.tscn +++ b/scene/ground/scene/c02/s02_走道.tscn @@ -62,6 +62,7 @@ data = { oneshot_animation = "oneshot_天冷" [node name="BGSprite2D" parent="Ground" index="2"] +position = Vector2(-1, 0) texture = ExtResource("2_cn1s8") [node name="portal_left" parent="Ground/DeployLayer" index="0"] @@ -87,7 +88,6 @@ note_key = "c02_卫生宣传画" [node name="鼠疫海报" parent="Ground/DeployLayer" index="4" instance=ExtResource("12_0fckv")] position = Vector2(439, -18) texture_cover = ExtResource("7_wdwbi") -content_key = "c02_鼠疫海报" [node name="Ambush纸人" parent="Ground/DeployLayer" index="5" instance=ExtResource("8_52as8")] position = Vector2(198, 48) @@ -138,11 +138,19 @@ offset_bottom = 22.0 text = "杂物堆 " +[node name="Note老鼠洞" parent="Ground/DeployLayer" index="8" instance=ExtResource("3_fy0o1")] +position = Vector2(510, 60) +title_filter = "c02" +note_key = "c02_老鼠洞" + [node name="MainPlayer" parent="Ground" index="5"] position = Vector2(53, 98) [node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] texture = null +[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] +points = PackedVector2Array(37, 150, 670, 150) + [editable path="Ground"] [editable path="Ground/DeployLayer/Ambush纸人"] diff --git a/scene/ground/scene/c02/s03_院子切换.tscn b/scene/ground/scene/c02/s03_院子切换.tscn index f0a98bc8..4ad449fb 100644 --- a/scene/ground/scene/c02/s03_院子切换.tscn +++ b/scene/ground/scene/c02/s03_院子切换.tscn @@ -85,9 +85,12 @@ scale = Vector2(1.05, 1.05) texture = ExtResource("7_icddm") [node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] -position = Vector2(-12, -143) +position = Vector2(0, -7) scale = Vector2(1.08, 1.08) +[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] +points = PackedVector2Array(37, 150, 2350, 150) + [node name="DirectionalLight2D" parent="Ground" index="9"] color = Color(0.688281, 0.748391, 0.96674, 1) diff --git a/scene/ground/scene/c02/s04_animation.gd b/scene/ground/scene/c02/s04_animation.gd new file mode 100644 index 00000000..6abbcac0 --- /dev/null +++ b/scene/ground/scene/c02/s04_animation.gd @@ -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 \ No newline at end of file diff --git a/scene/ground/scene/c02/s04_院子现实版.tscn b/scene/ground/scene/c02/s04_院子现实版.tscn new file mode 100644 index 00000000..1efb999e --- /dev/null +++ b/scene/ground/scene/c02/s04_院子现实版.tscn @@ -0,0 +1,57 @@ +[gd_scene load_steps=8 format=3 uid="uid://cp8d3ag5nbjq0"] + +[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_2jej0"] +[ext_resource type="Script" path="res://scene/ground/scene/c02/s04_animation.gd" id="2_jyere"] +[ext_resource type="Texture2D" uid="uid://wrxhnk7enk2f" path="res://asset/art/scene/c02/s04_院子现实版/bg_院子1楼(黄昏无人).png" id="3_gmxu4"] +[ext_resource type="Texture2D" uid="uid://b72loyn1of7tb" path="res://asset/art/scene/c02/s04_院子现实版/fg_楼梯.png" id="4_uey0g"] +[ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_xw32r"] +[ext_resource type="Texture2D" uid="uid://dcnlkhicejjqk" path="res://asset/art/scene/c02/s04_院子现实版/e_铁门.png" id="5_8n1mf"] +[ext_resource type="Texture2D" uid="uid://bvkwihmpu718g" path="res://asset/art/scene/c02/s04_院子现实版/fg_前景.png" id="6_ll57k"] + +[node name="S04" type="Node2D"] + +[node name="Ground" parent="." instance=ExtResource("1_2jej0")] +scene_name = "c02_s04" + +[node name="AnimationPlayer" parent="Ground" index="0"] +script = ExtResource("2_jyere") +oneshot_animation = "" + +[node name="BGSprite2D" parent="Ground" index="2"] +texture = ExtResource("3_gmxu4") + +[node name="portal_left" parent="Ground/DeployLayer" index="0"] +disable_key_after_used = null + +[node name="portal_right" parent="Ground/DeployLayer" index="1"] +disable_key_after_used = null + +[node name="portal_1" parent="Ground/DeployLayer" index="2" instance=ExtResource("4_xw32r")] +position = Vector2(194, 10) +debug_note = "通往 1012 房间" +portal_name = "1" +target_scene = "c02_s05" +target_portal = "right" +status = "locked" +disable_key_after_used = null +prop_key = "prop_1012钥匙" + +[node name="楼梯" type="Sprite2D" parent="Ground/DeployLayer" index="3"] +z_index = 7 +position = Vector2(1259, -3) +texture = ExtResource("4_uey0g") + +[node name="铁门" type="Sprite2D" parent="Ground/DeployLayer" index="4"] +z_index = 7 +position = Vector2(1089, 22) +texture = ExtResource("5_8n1mf") + +[node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] +position = Vector2(0, -6) +scale = Vector2(1.08, 1.08) +texture = ExtResource("6_ll57k") + +[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] +points = PackedVector2Array(37, 150, 2350, 150) + +[editable path="Ground"] diff --git a/scene/ground/scene/c02/s05_1012外间现实版.tscn b/scene/ground/scene/c02/s05_1012外间现实版.tscn new file mode 100644 index 00000000..12dbd13e --- /dev/null +++ b/scene/ground/scene/c02/s05_1012外间现实版.tscn @@ -0,0 +1,42 @@ +[gd_scene load_steps=5 format=3 uid="uid://bivc5cdap370p"] + +[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_2713m"] +[ext_resource type="Script" path="res://scene/ground/scene/c02/s05_animation.gd" id="2_3v8iu"] +[ext_resource type="Texture2D" uid="uid://cl8no405v4hsk" path="res://asset/art/scene/c02/s05_1012外间现实版/bg_1012外间.png" id="3_8jr2p"] +[ext_resource type="Texture2D" uid="uid://d04bppjl5h3vo" path="res://asset/art/scene/c02/s05_1012外间现实版/fg_1012外间.png" id="4_quka7"] + +[node name="S05" type="Node2D"] + +[node name="Ground" parent="." instance=ExtResource("1_2713m")] +scene_name = "c02_s05" +default_portal = "right" +player_y = 55 + +[node name="AnimationPlayer" parent="Ground" index="0"] +script = ExtResource("2_3v8iu") +oneshot_animation = "" + +[node name="BGSprite2D" parent="Ground" index="2"] +position = Vector2(74, 2) +texture = ExtResource("3_8jr2p") + +[node name="portal_left" parent="Ground/DeployLayer" index="0"] +position = Vector2(138, 18) +disable_key_after_used = null + +[node name="portal_right" parent="Ground/DeployLayer" index="1"] +position = Vector2(447, 26) +disable_key_after_used = null + +[node name="MainPlayer" parent="Ground" index="5"] +position = Vector2(447, 103) +facing_direction = Vector2(-1, 0) + +[node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] +position = Vector2(75, -15) +texture = ExtResource("4_quka7") + +[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] +points = PackedVector2Array(95, 150, 470, 150) + +[editable path="Ground"] diff --git a/scene/ground/scene/c02/s05_animation.gd b/scene/ground/scene/c02/s05_animation.gd new file mode 100644 index 00000000..6abbcac0 --- /dev/null +++ b/scene/ground/scene/c02/s05_animation.gd @@ -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 \ No newline at end of file diff --git a/scene/ground/scene/c02/s06_animation.gd b/scene/ground/scene/c02/s06_animation.gd new file mode 100644 index 00000000..6abbcac0 --- /dev/null +++ b/scene/ground/scene/c02/s06_animation.gd @@ -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 \ No newline at end of file diff --git a/scene/ground/scene/c02/s06_院子回忆版.tscn b/scene/ground/scene/c02/s06_院子回忆版.tscn new file mode 100644 index 00000000..96a5a4e1 --- /dev/null +++ b/scene/ground/scene/c02/s06_院子回忆版.tscn @@ -0,0 +1,37 @@ +[gd_scene load_steps=6 format=3 uid="uid://cootarwb44vvh"] + +[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_1kelt"] +[ext_resource type="Script" path="res://scene/ground/scene/c02/s06_animation.gd" id="2_d64eu"] +[ext_resource type="Texture2D" uid="uid://d1cmto7bvap2g" path="res://asset/art/scene/c02/s06_院子回忆版/bg_院子1楼(黄昏有人).png" id="3_4fobb"] +[ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_1mes0"] +[ext_resource type="Texture2D" uid="uid://wge8cr5h5p78" path="res://asset/art/scene/c02/s06_院子回忆版/fg_楼梯2.png" id="6_5nv2j"] + +[node name="S06" type="Node2D"] + +[node name="Ground" parent="." instance=ExtResource("1_1kelt")] +scene_name = "c02_s06" + +[node name="AnimationPlayer" parent="Ground" index="0"] +script = ExtResource("2_d64eu") +oneshot_animation = "" + +[node name="BGSprite2D" parent="Ground" index="2"] +texture = ExtResource("3_4fobb") + +[node name="portal_1" parent="Ground/DeployLayer" index="2" instance=ExtResource("4_1mes0")] +position = Vector2(1739, 9) +portal_name = "1" + +[node name="楼梯" type="Sprite2D" parent="Ground/DeployLayer" index="3"] +z_index = 7 +position = Vector2(1264, -3) +texture = ExtResource("6_5nv2j") + +[node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] +position = Vector2(0, -5) +scale = Vector2(1.1, 1.1) + +[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] +points = PackedVector2Array(37, 150, 2350, 150) + +[editable path="Ground"] diff --git a/scene/ground/scene/c02/s07_animation.gd b/scene/ground/scene/c02/s07_animation.gd new file mode 100644 index 00000000..6abbcac0 --- /dev/null +++ b/scene/ground/scene/c02/s07_animation.gd @@ -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 \ No newline at end of file diff --git a/scene/ground/scene/c02/s07_过道回忆版.tscn b/scene/ground/scene/c02/s07_过道回忆版.tscn new file mode 100644 index 00000000..1f4b80d8 --- /dev/null +++ b/scene/ground/scene/c02/s07_过道回忆版.tscn @@ -0,0 +1,25 @@ +[gd_scene load_steps=4 format=3 uid="uid://t4xjt774ngwh"] + +[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_ayofl"] +[ext_resource type="Script" path="res://scene/ground/scene/c02/s07_animation.gd" id="2_bfclu"] +[ext_resource type="Texture2D" uid="uid://cgue0x46x47nt" path="res://asset/art/scene/c02/s07_过道回忆版/bg_过道(回忆版).png" id="3_ga8ji"] + +[node name="S07" type="Node2D"] + +[node name="Ground" parent="." instance=ExtResource("1_ayofl")] +scene_name = "c02_s07" + +[node name="AnimationPlayer" parent="Ground" index="0"] +script = ExtResource("2_bfclu") +oneshot_animation = "" + +[node name="BGSprite2D" parent="Ground" index="2"] +texture = ExtResource("3_ga8ji") + +[node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] +texture = null + +[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] +points = PackedVector2Array(37, 150, 670, 150) + +[editable path="Ground"] diff --git a/scene/ground/scene/c02/s08_1012外间回忆版.tscn b/scene/ground/scene/c02/s08_1012外间回忆版.tscn new file mode 100644 index 00000000..77cd4c71 --- /dev/null +++ b/scene/ground/scene/c02/s08_1012外间回忆版.tscn @@ -0,0 +1,40 @@ +[gd_scene load_steps=5 format=3 uid="uid://ce2vyyg2reg52"] + +[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_judx3"] +[ext_resource type="Script" path="res://scene/ground/scene/c02/s08_animation.gd" id="2_m4uw8"] +[ext_resource type="Texture2D" uid="uid://blaox0jqpnku8" path="res://asset/art/scene/c02/s08_1012外间回忆版/bg_1012外间(回忆版).png" id="3_auuqw"] +[ext_resource type="Texture2D" uid="uid://cipr4k0ydx4ll" path="res://asset/art/scene/c02/s08_1012外间回忆版/fg_前景.png" id="4_ogg5x"] + +[node name="S08" type="Node2D"] + +[node name="Ground" parent="." instance=ExtResource("1_judx3")] +scene_name = "c02_s08" +default_portal = "right" +player_y = 55 + +[node name="AnimationPlayer" parent="Ground" index="0"] +script = ExtResource("2_m4uw8") +oneshot_animation = "" + +[node name="BGSprite2D" parent="Ground" index="2"] +position = Vector2(77, 1) +texture = ExtResource("3_auuqw") + +[node name="portal_left" parent="Ground/DeployLayer" index="0"] +position = Vector2(141, 18) + +[node name="portal_right" parent="Ground/DeployLayer" index="1"] +position = Vector2(448, 16) + +[node name="MainPlayer" parent="Ground" index="5"] +position = Vector2(448, 103) +facing_direction = Vector2(-1, 0) + +[node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] +position = Vector2(78, -14) +texture = ExtResource("4_ogg5x") + +[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] +points = PackedVector2Array(95, 150, 475, 150) + +[editable path="Ground"] diff --git a/scene/ground/scene/c02/s08_animation.gd b/scene/ground/scene/c02/s08_animation.gd new file mode 100644 index 00000000..6abbcac0 --- /dev/null +++ b/scene/ground/scene/c02/s08_animation.gd @@ -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 \ No newline at end of file diff --git a/scene/ground/scene/c02/s09_1014现实版.tscn b/scene/ground/scene/c02/s09_1014现实版.tscn new file mode 100644 index 00000000..182a83d3 --- /dev/null +++ b/scene/ground/scene/c02/s09_1014现实版.tscn @@ -0,0 +1,31 @@ +[gd_scene load_steps=4 format=3 uid="uid://ryups1dnwdto"] + +[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_0jub8"] +[ext_resource type="Script" path="res://scene/ground/scene/c02/s09_animation.gd" id="2_s3fe0"] +[ext_resource type="Texture2D" uid="uid://d3x6sl377cy4" path="res://asset/art/scene/c02/s09_1014现实版/bg_1014房间-回忆版.png" id="3_8r0fe"] + +[node name="S09" type="Node2D"] + +[node name="Ground" parent="." instance=ExtResource("1_0jub8")] +scene_name = "c02_s09" + +[node name="AnimationPlayer" parent="Ground" index="0"] +script = ExtResource("2_s3fe0") +oneshot_animation = "" + +[node name="BGSprite2D" parent="Ground" index="2"] +texture = ExtResource("3_8r0fe") + +[node name="portal_left" parent="Ground/DeployLayer" index="0"] +position = Vector2(62, 16) + +[node name="portal_right" parent="Ground/DeployLayer" index="1"] +position = Vector2(522, 16) + +[node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] +texture = null + +[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] +points = PackedVector2Array(37, 150, 620, 150) + +[editable path="Ground"] diff --git a/scene/ground/scene/c02/s09_animation.gd b/scene/ground/scene/c02/s09_animation.gd new file mode 100644 index 00000000..6abbcac0 --- /dev/null +++ b/scene/ground/scene/c02/s09_animation.gd @@ -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 \ No newline at end of file diff --git a/scene/ground/scene/c02/s10_animation.gd b/scene/ground/scene/c02/s10_animation.gd new file mode 100644 index 00000000..6abbcac0 --- /dev/null +++ b/scene/ground/scene/c02/s10_animation.gd @@ -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 \ No newline at end of file diff --git a/scene/ground/scene/c02/s10_裂缝通道.tscn b/scene/ground/scene/c02/s10_裂缝通道.tscn new file mode 100644 index 00000000..72ca5608 --- /dev/null +++ b/scene/ground/scene/c02/s10_裂缝通道.tscn @@ -0,0 +1,47 @@ +[gd_scene load_steps=5 format=3 uid="uid://dny21yhtuteap"] + +[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_w7j0m"] +[ext_resource type="Script" path="res://scene/ground/scene/c02/s10_animation.gd" id="2_egtqi"] +[ext_resource type="Texture2D" uid="uid://bo30bcswcstre" path="res://asset/art/scene/c02/s10_裂缝通道/bg_裂缝通道.png" id="3_cckdm"] +[ext_resource type="Texture2D" uid="uid://dpmf4w76ln2uo" path="res://asset/art/scene/c02/s10_裂缝通道/fg_裂缝通道.png" id="4_8gxkr"] + +[node name="S10" type="Node2D"] + +[node name="Ground" parent="." instance=ExtResource("1_w7j0m")] +scale = Vector2(1, 1.01426) +scene_name = "c02_s10" +player_y = 90 +footstep_type = "crawling" + +[node name="AnimationPlayer" parent="Ground" index="0"] +script = ExtResource("2_egtqi") +oneshot_animation = "" + +[node name="BGSprite2D" parent="Ground" index="2"] +texture = ExtResource("3_cckdm") + +[node name="portal_left" parent="Ground/DeployLayer" index="0"] +position = Vector2(249, 14) + +[node name="portal_right" parent="Ground/DeployLayer" index="1"] +position = Vector2(667, 20) + +[node name="MainPlayer" parent="Ground" index="5"] +position = Vector2(249, 68) +character = "吕萍爬行" +facing_direction = Vector2(1, 0) + +[node name="Sprite2D" type="Sprite2D" parent="Ground/ParallaxForeground/BGParallaxLayer" index="0"] +position = Vector2(441, -17) +scale = Vector2(0.998846, 1.00216) +texture = ExtResource("4_8gxkr") + +[node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] +visible = false +position = Vector2(193, 0) +texture = null + +[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] +points = PackedVector2Array(230, 150, 650, 150) + +[editable path="Ground"] diff --git a/scene/ground/scene/c02/s11_3014回忆版.tscn b/scene/ground/scene/c02/s11_3014回忆版.tscn new file mode 100644 index 00000000..c2dee1f0 --- /dev/null +++ b/scene/ground/scene/c02/s11_3014回忆版.tscn @@ -0,0 +1,49 @@ +[gd_scene load_steps=8 format=3 uid="uid://dq41rvwl5hyrk"] + +[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_j6dox"] +[ext_resource type="Script" path="res://scene/ground/scene/c02/s11_animation.gd" id="2_dbjgm"] +[ext_resource type="Texture2D" uid="uid://dacmld3f2y74j" path="res://asset/art/scene/c02/s11_3014回忆版/bg_3014里间与墙内空间.png" id="3_s8if0"] +[ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="4_wd2v1"] +[ext_resource type="Texture2D" uid="uid://c73bxg5jnciy8" path="res://asset/art/scene/c02/s11_3014回忆版/e_书桌组.png" id="5_683gr"] +[ext_resource type="Texture2D" uid="uid://b6u0mok6ofk4a" path="res://asset/art/scene/c02/s11_3014回忆版/e_墙壁.png" id="6_hbkki"] +[ext_resource type="Texture2D" uid="uid://cm1rkmeyor7hy" path="res://asset/art/scene/c02/s11_3014回忆版/fg_前景.png" id="6_jqffo"] + +[node name="S11" type="Node2D"] + +[node name="Ground" parent="." instance=ExtResource("1_j6dox")] +scene_name = "c02_s11" + +[node name="AnimationPlayer" parent="Ground" index="0"] +script = ExtResource("2_dbjgm") +oneshot_animation = "" + +[node name="BGSprite2D" parent="Ground" index="2"] +texture = ExtResource("3_s8if0") + +[node name="portal_left" parent="Ground/DeployLayer" index="0"] +position = Vector2(70, 5) + +[node name="portal_right" parent="Ground/DeployLayer" index="1"] +position = Vector2(625, 33) + +[node name="Ambush" parent="Ground/DeployLayer" index="2" instance=ExtResource("4_wd2v1")] +position = Vector2(354, 29) +texture = ExtResource("5_683gr") +trigger_mode = "interact" + +[node name="MainPlayer" parent="Ground" index="5"] +position = Vector2(70, 88) +facing_direction = Vector2(1, 0) + +[node name="墙壁" type="Sprite2D" parent="Ground/ParallaxForeground/BGParallaxLayer" index="0"] +position = Vector2(658, 0) +texture = ExtResource("6_hbkki") + +[node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] +position = Vector2(0, -14) +texture = ExtResource("6_jqffo") + +[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] +points = PackedVector2Array(37, 150, 625, 150) + +[editable path="Ground"] diff --git a/scene/ground/scene/c02/s11_animation.gd b/scene/ground/scene/c02/s11_animation.gd new file mode 100644 index 00000000..d4d75065 --- /dev/null +++ b/scene/ground/scene/c02/s11_animation.gd @@ -0,0 +1,30 @@ +@tool +extends AnimationRoot + + +# 覆盖该方法 +func _default_data() -> Dictionary: + return {} + + +func _ready() -> void: + super._ready() + if Engine.is_editor_hint(): + return + + +var camera_original_right = 0 + + +func _on_ground_ready() -> void: + # 暂时限制观看墙右侧 + camera_original_right = SceneManager.get_camera_marker().limit_right + SceneManager.get_camera_marker().limit_right = camera_original_right - 200 + # _tween_show_right_side() + + +func _tween_show_right_side() -> void: + var tween = create_tween() + tween.tween_property( + SceneManager.get_camera_marker(), "limit_right", camera_original_right, 1.5 + ) diff --git a/scene/ground/scene/c02/s12_1014诡异版.tscn b/scene/ground/scene/c02/s12_1014诡异版.tscn new file mode 100644 index 00000000..c90bc4ad --- /dev/null +++ b/scene/ground/scene/c02/s12_1014诡异版.tscn @@ -0,0 +1,58 @@ +[gd_scene load_steps=9 format=3 uid="uid://da4cuf2i3nwpj"] + +[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_ngo77"] +[ext_resource type="Script" path="res://scene/ground/scene/c02/s12_animation.gd" id="2_7ah3n"] +[ext_resource type="Texture2D" uid="uid://bnvrbjxo3duu2" path="res://asset/art/scene/c02/s12_1014诡异版/bg_1014诡异幻境背景.png" id="3_dyuvy"] +[ext_resource type="Texture2D" uid="uid://ddcburr57lb75" path="res://asset/art/scene/c02/s12_1014诡异版/bg_衔接阴影.png" id="4_y77d6"] +[ext_resource type="PackedScene" uid="uid://cw3q5pvciumil" path="res://scene/entity/interactable.tscn" id="4_yfs7q"] +[ext_resource type="Texture2D" uid="uid://ct12wdsm57eyy" path="res://asset/art/scene/c02/s12_1014诡异版/e_床上物品组.png" id="5_irgk5"] +[ext_resource type="PackedScene" uid="uid://b8ncf4d0jda8r" path="res://scene/entity/partical/particals_ash.tscn" id="5_q2aoh"] +[ext_resource type="Texture2D" uid="uid://bjvungu3tb155" path="res://asset/art/scene/c02/s12_1014诡异版/fg_1014前景.png" id="6_yct81"] + +[node name="S12" type="Node2D"] + +[node name="Ground" parent="." instance=ExtResource("1_ngo77")] +scene_name = "c02_s12" +default_portal = "right" + +[node name="AnimationPlayer" parent="Ground" index="0"] +script = ExtResource("2_7ah3n") +oneshot_animation = "" + +[node name="BGSprite2D" parent="Ground" index="2"] +texture = ExtResource("3_dyuvy") + +[node name="衔接阴影" type="Sprite2D" parent="Ground/BGSprite2D" index="0"] +position = Vector2(2827, -9) +texture = ExtResource("4_y77d6") + +[node name="portal_left" parent="Ground/DeployLayer" index="0"] +position = Vector2(332, 27) + +[node name="portal_right" parent="Ground/DeployLayer" index="1"] +position = Vector2(3691, 13) + +[node name="ParticalsAsh" parent="Ground/DeployLayer" index="2" instance=ExtResource("5_q2aoh")] +z_index = 4 +position = Vector2(2666, 0) + +[node name="ParticalsAsh2" parent="Ground/DeployLayer" index="3" instance=ExtResource("5_q2aoh")] +z_index = 4 +position = Vector2(1725, 2) + +[node name="ParticalsAsh3" parent="Ground/DeployLayer" index="4" instance=ExtResource("5_q2aoh")] +z_index = 4 +position = Vector2(925, 1) + +[node name="Interactable床" parent="Ground/DeployLayer" index="5" instance=ExtResource("4_yfs7q")] +position = Vector2(333, 76) +texture = ExtResource("5_irgk5") + +[node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] +position = Vector2(3584, -7) +texture = ExtResource("6_yct81") + +[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] +points = PackedVector2Array(37, 150, 4200, 150) + +[editable path="Ground"] diff --git a/scene/ground/scene/c02/s12_animation.gd b/scene/ground/scene/c02/s12_animation.gd new file mode 100644 index 00000000..6abbcac0 --- /dev/null +++ b/scene/ground/scene/c02/s12_animation.gd @@ -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 \ No newline at end of file diff --git a/scene/ground/scene/c02/s13_animation.gd b/scene/ground/scene/c02/s13_animation.gd new file mode 100644 index 00000000..6abbcac0 --- /dev/null +++ b/scene/ground/scene/c02/s13_animation.gd @@ -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 \ No newline at end of file diff --git a/scene/ground/scene/c02/s13_院子诡异版.tscn b/scene/ground/scene/c02/s13_院子诡异版.tscn new file mode 100644 index 00000000..17cdde43 --- /dev/null +++ b/scene/ground/scene/c02/s13_院子诡异版.tscn @@ -0,0 +1,36 @@ +[gd_scene load_steps=6 format=3 uid="uid://bvjutch6jex0v"] + +[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_71lma"] +[ext_resource type="Script" path="res://scene/ground/scene/c02/s13_animation.gd" id="2_w5nqu"] +[ext_resource type="Texture2D" uid="uid://da3v7s68728af" path="res://asset/art/scene/c02/s13_院子诡异版/bg_院子1楼(黑).png" id="3_efmyf"] +[ext_resource type="Texture2D" uid="uid://b3ootg88b63rb" path="res://asset/art/scene/c02/s13_院子诡异版/fg_楼梯调色后.png" id="4_4adgb"] +[ext_resource type="Texture2D" uid="uid://d3o8gxjbl8734" path="res://asset/art/scene/c02/s13_院子诡异版/e_排队纸人调色.png" id="4_7ckhl"] + +[node name="S13" type="Node2D"] + +[node name="Ground" parent="." instance=ExtResource("1_71lma")] +scene_name = "c02_s13" + +[node name="AnimationPlayer" parent="Ground" index="0"] +script = ExtResource("2_w5nqu") +oneshot_animation = "" + +[node name="BGSprite2D" parent="Ground" index="2"] +texture = ExtResource("3_efmyf") + +[node name="排队纸人" type="Sprite2D" parent="Ground/DeployLayer" index="2"] +position = Vector2(1520, 17) +texture = ExtResource("4_7ckhl") + +[node name="楼梯" type="Sprite2D" parent="Ground/ParallaxForeground/BGParallaxLayer" index="0"] +position = Vector2(1267, -4) +texture = ExtResource("4_4adgb") + +[node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] +position = Vector2(-1, -16) +scale = Vector2(1.05, 1.05) + +[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] +points = PackedVector2Array(37, 150, 2350, 150) + +[editable path="Ground"] diff --git a/scene/ground/scene/c02/s14_animation.gd b/scene/ground/scene/c02/s14_animation.gd new file mode 100644 index 00000000..6abbcac0 --- /dev/null +++ b/scene/ground/scene/c02/s14_animation.gd @@ -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 \ No newline at end of file diff --git a/scene/ground/scene/c02/s14_过道诡异版.tscn b/scene/ground/scene/c02/s14_过道诡异版.tscn new file mode 100644 index 00000000..2de964ef --- /dev/null +++ b/scene/ground/scene/c02/s14_过道诡异版.tscn @@ -0,0 +1,38 @@ +[gd_scene load_steps=8 format=3 uid="uid://d0p4x5st2r315"] + +[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_om431"] +[ext_resource type="Script" path="res://scene/ground/scene/c02/s14_animation.gd" id="2_b41rh"] +[ext_resource type="Texture2D" uid="uid://diipofcj57pif" path="res://asset/art/scene/c02/s14_过道诡异版/bg_过道(诡异版).png" id="3_p0pkx"] +[ext_resource type="PackedScene" uid="uid://ci5anaxsa1apl" path="res://scene/entity/local_inspectable.tscn" id="5_h38op"] +[ext_resource type="Texture2D" uid="uid://cyue3suixb3eo" path="res://asset/art/scene/c02/s14_过道诡异版/e_碗和蜡烛.png" id="5_pbhsu"] +[ext_resource type="Texture2D" uid="uid://cn35kih5akphr" path="res://asset/art/scene/c02/s14_过道诡异版/e_欢迎小蝶回家横幅.png" id="6_tud2a"] +[ext_resource type="Texture2D" uid="uid://dt24lj1gw1xht" path="res://asset/art/scene/c02/s14_过道诡异版/ux_过道蜡烛碗特写.png" id="7_miqdc"] + +[node name="S14" type="Node2D"] + +[node name="Ground" parent="." instance=ExtResource("1_om431")] +scene_name = "c02_s14" + +[node name="AnimationPlayer" parent="Ground" index="0"] +script = ExtResource("2_b41rh") +oneshot_animation = "" + +[node name="BGSprite2D" parent="Ground" index="2"] +texture = ExtResource("3_p0pkx") + +[node name="横幅" type="Sprite2D" parent="Ground/DeployLayer" index="2"] +position = Vector2(320, -21) +texture = ExtResource("6_tud2a") + +[node name="LocalInspectable祭祀碗" parent="Ground/DeployLayer" index="3" instance=ExtResource("5_h38op")] +position = Vector2(331, 88) +texture = ExtResource("5_pbhsu") +texture_cover = ExtResource("7_miqdc") + +[node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] +texture = null + +[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] +points = PackedVector2Array(37, 150, 660, 150) + +[editable path="Ground"] diff --git a/scene/ground/scene/c02/s15_1014家具版.tscn b/scene/ground/scene/c02/s15_1014家具版.tscn new file mode 100644 index 00000000..e0b84aa1 --- /dev/null +++ b/scene/ground/scene/c02/s15_1014家具版.tscn @@ -0,0 +1,38 @@ +[gd_scene load_steps=5 format=3 uid="uid://b21p53g42j2nt"] + +[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_2gio2"] +[ext_resource type="Script" path="res://scene/ground/scene/c02/s15_animation.gd" id="2_vo24h"] +[ext_resource type="Texture2D" uid="uid://imywljabomc7" path="res://asset/art/scene/c02/s15_1014家具版/bg_1014房间-家具版.png" id="3_khabk"] +[ext_resource type="Texture2D" uid="uid://byyfo8n2vhk6e" path="res://asset/art/scene/c02/s15_1014家具版/fg_前景.png" id="4_rar4n"] + +[node name="S15" type="Node2D"] + +[node name="Ground" parent="." instance=ExtResource("1_2gio2")] +scene_name = "c02_s15" +player_y = 60 + +[node name="AnimationPlayer" parent="Ground" index="0"] +script = ExtResource("2_vo24h") +oneshot_animation = "" + +[node name="BGSprite2D" parent="Ground" index="2"] +texture = ExtResource("3_khabk") + +[node name="portal_left" parent="Ground/DeployLayer" index="0"] +position = Vector2(64, 13) + +[node name="portal_right" parent="Ground/DeployLayer" index="1"] +position = Vector2(521, 15) + +[node name="MainPlayer" parent="Ground" index="5"] +position = Vector2(64, 98) +facing_direction = Vector2(1, 0) + +[node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] +position = Vector2(-1, -15) +texture = ExtResource("4_rar4n") + +[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] +points = PackedVector2Array(37, 150, 600, 150) + +[editable path="Ground"] diff --git a/scene/ground/scene/c02/s15_animation.gd b/scene/ground/scene/c02/s15_animation.gd new file mode 100644 index 00000000..6abbcac0 --- /dev/null +++ b/scene/ground/scene/c02/s15_animation.gd @@ -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 \ No newline at end of file