From 32db6aceaae9836f910a3022634c7e82df74c751 Mon Sep 17 00:00:00 2001 From: cakipaul Date: Tue, 26 Aug 2025 20:57:41 +0800 Subject: [PATCH] =?UTF-8?q?=E9=AC=BC=E6=89=93=E5=A2=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../c04_三楼走廊擦墙演出_frames.tres | 89 +++-- .../c04_木头人游戏/c04_木头人游戏_frames.tres | 2 +- asset/dialogue/event_stage.dialogue | 2 +- asset/dialogue/item_description.dialogue | 6 + config/animation/entity_sprite_frames.tres | 79 ++++- scene/character/player_animation_config.gd | 1 + scene/effect/c04_鬼打墙黑手.tscn | 185 +++++++++++ scene/entity/visible_static_body.gd | 13 + scene/entity/visible_static_body.gd.uid | 1 + scene/ground/ground_loader.gd | 2 +- scene/ground/scene/c04/s04_鬼打墙.gd | 50 ++- scene/ground/scene/c04/s04_鬼打墙.tscn | 190 ++++------- scene/ground/scene/c04/s05_客厅.tscn | 33 +- scene/ground/scene/c04/s08_三楼III.gd | 134 +++++++- scene/ground/scene/c04/s08_三楼III.tscn | 313 ++++++++++++++---- scene/ground/script/c04/s08_event陆蝶演出.gd | 36 +- 16 files changed, 903 insertions(+), 233 deletions(-) create mode 100644 scene/effect/c04_鬼打墙黑手.tscn create mode 100644 scene/entity/visible_static_body.gd create mode 100644 scene/entity/visible_static_body.gd.uid diff --git a/asset/art/gif/c04_三楼走廊擦墙演出/c04_三楼走廊擦墙演出_frames.tres b/asset/art/gif/c04_三楼走廊擦墙演出/c04_三楼走廊擦墙演出_frames.tres index 82a219aa..19cca637 100644 --- a/asset/art/gif/c04_三楼走廊擦墙演出/c04_三楼走廊擦墙演出_frames.tres +++ b/asset/art/gif/c04_三楼走廊擦墙演出/c04_三楼走廊擦墙演出_frames.tres @@ -89,27 +89,6 @@ animations = [{ }, { "frames": [{ "duration": 6.0, -"texture": ExtResource("9_av68t") -}, { -"duration": 6.0, -"texture": ExtResource("10_ts00y") -}, { -"duration": 6.0, -"texture": ExtResource("11_2mnxt") -}, { -"duration": 6.0, -"texture": ExtResource("12_r8b8s") -}, { -"duration": 6.0, -"texture": ExtResource("13_yevpv") -}, { -"duration": 6.0, -"texture": ExtResource("14_i8od7") -}, { -"duration": 6.0, -"texture": ExtResource("15_x11xv") -}, { -"duration": 6.0, "texture": ExtResource("16_vu64x") }, { "duration": 6.0, @@ -128,10 +107,54 @@ animations = [{ "texture": ExtResource("21_o5rpk") }], "loop": true, -"name": &"陆仁回头", +"name": &"陆仁停在家门口", "speed": 30.0 }, { "frames": [{ +"duration": 1.0, +"texture": ExtResource("9_av68t") +}, { +"duration": 1.0, +"texture": ExtResource("10_ts00y") +}, { +"duration": 1.0, +"texture": ExtResource("11_2mnxt") +}, { +"duration": 1.0, +"texture": ExtResource("12_r8b8s") +}, { +"duration": 1.0, +"texture": ExtResource("13_yevpv") +}, { +"duration": 1.0, +"texture": ExtResource("14_i8od7") +}, { +"duration": 1.0, +"texture": ExtResource("15_x11xv") +}, { +"duration": 1.0, +"texture": ExtResource("16_vu64x") +}, { +"duration": 1.0, +"texture": ExtResource("17_5seew") +}, { +"duration": 1.0, +"texture": ExtResource("18_t11bv") +}, { +"duration": 1.0, +"texture": ExtResource("19_jc1qd") +}, { +"duration": 1.0, +"texture": ExtResource("20_akmyw") +}, { +"duration": 1.0, +"texture": ExtResource("21_o5rpk") +}], +"loop": true, +"name": &"陆仁回头", +"speed": 6.0 +}, { +"frames": [{ "duration": 6.0, "texture": ExtResource("22_x2fa3") }, { @@ -185,19 +208,19 @@ animations = [{ "speed": 30.0 }, { "frames": [{ -"duration": 15.0, +"duration": 10.0, "texture": ExtResource("1_53246") }, { -"duration": 15.0, +"duration": 10.0, "texture": ExtResource("2_ux4w6") }, { -"duration": 15.0, +"duration": 10.0, "texture": ExtResource("3_46u2u") }, { -"duration": 15.0, +"duration": 10.0, "texture": ExtResource("4_s4veq") }, { -"duration": 15.0, +"duration": 10.0, "texture": ExtResource("5_ggpb3") }], "loop": false, @@ -222,12 +245,7 @@ animations = [{ }, { "duration": 6.0, "texture": ExtResource("14_i8od7") -}], -"loop": true, -"name": &"陆仁行走1", -"speed": 30.0 }, { -"frames": [{ "duration": 6.0, "texture": ExtResource("9_av68t") }, { @@ -245,8 +263,11 @@ animations = [{ }, { "duration": 6.0, "texture": ExtResource("14_i8od7") +}, { +"duration": 6.0, +"texture": ExtResource("15_x11xv") }], -"loop": true, -"name": &"陆仁行走2", +"loop": false, +"name": &"陆仁行走回头", "speed": 30.0 }] diff --git a/asset/art/gif/c04_木头人游戏/c04_木头人游戏_frames.tres b/asset/art/gif/c04_木头人游戏/c04_木头人游戏_frames.tres index a670983e..262e0170 100644 --- a/asset/art/gif/c04_木头人游戏/c04_木头人游戏_frames.tres +++ b/asset/art/gif/c04_木头人游戏/c04_木头人游戏_frames.tres @@ -421,7 +421,7 @@ animations = [{ "texture": ExtResource("21_v3lwr") }], "loop": true, -"name": &"木头人游戏3_动后尾帧静止", +"name": &"木头人游戏3_互动后尾帧静止", "speed": 30.0 }, { "frames": [{ diff --git a/asset/dialogue/event_stage.dialogue b/asset/dialogue/event_stage.dialogue index f33652f7..3a7d0abc 100644 --- a/asset/dialogue/event_stage.dialogue +++ b/asset/dialogue/event_stage.dialogue @@ -45,7 +45,7 @@ c03_intro_c04: 0:初始化 1:演出完成 ~ EventStage_c04 # 小蝶家门口,陆蝶演出&鬼打墙 -c04_ghost_trapped: 0:初始化 1:第一次开门 2:进入鬼打墙场景 3:鬼打墙结束 +c04_ghost_trapped: 0:初始化 1:第一次开门 2:进入鬼打墙场景 3:鬼打墙结束 4:排队纸人歪头 # 除晦游戏 c04_erase_curse: 0:初始化 1:开始游戏 2:游戏结束 diff --git a/asset/dialogue/item_description.dialogue b/asset/dialogue/item_description.dialogue index aebf0546..c206d8b1 100644 --- a/asset/dialogue/item_description.dialogue +++ b/asset/dialogue/item_description.dialogue @@ -459,6 +459,12 @@ skip[ID:prop_沾血的老虎钳_详情] ~ Notes_c04 # 鬼打墙 当年他们是有多恨我们家?[ID:c04_鬼打墙_开始os] +回家了...[ID:c04_鬼打墙_首次开门] +???[ID:c04_鬼打墙_首次传送] +不,我不想听它们的。[ID:c04_鬼打墙_走向楼梯] +不会是...鬼打墙吧?[ID:c04_鬼打墙_再次开门] +...[ID:c04_鬼打墙_全部交互完] +我记得...{br}捂眼静心,或许有用。[ID:c04_鬼打墙_捂眼] => END ~ Notes_c05 diff --git a/config/animation/entity_sprite_frames.tres b/config/animation/entity_sprite_frames.tres index 12ace793..f7a217c8 100644 --- a/config/animation/entity_sprite_frames.tres +++ b/config/animation/entity_sprite_frames.tres @@ -1,4 +1,4 @@ -[gd_resource type="SpriteFrames" load_steps=1053 format=3 uid="uid://b7fhheih1hbvf"] +[gd_resource type="SpriteFrames" load_steps=1071 format=3 uid="uid://b7fhheih1hbvf"] [ext_resource type="Texture2D" uid="uid://dvq64espa37lx" path="res://asset/art/animation/c00_吕萍_idle_left/zhhx1.png" id="1_ekv0l"] [ext_resource type="Texture2D" uid="uid://dcp4gk5lib4bl" path="res://asset/art/animation/c00_吕萍_idle_left/zhhx2.png" id="2_fq076"] @@ -1052,6 +1052,24 @@ [ext_resource type="Texture2D" uid="uid://d11u3r8knuujh" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/胖子对半砍/6.png" id="1041_nis13"] [ext_resource type="Texture2D" uid="uid://df0k1vv0tnx75" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/胖子对半砍/7.png" id="1042_y1qej"] [ext_resource type="Texture2D" uid="uid://r7l0ou2nvmwt" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/胖子对半砍/8.png" id="1043_e3b0h"] +[ext_resource type="Texture2D" uid="uid://dmr1greolytrq" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/0.png" id="1053_mhvgv"] +[ext_resource type="Texture2D" uid="uid://gy6scy5crhox" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/1.png" id="1054_3vhq4"] +[ext_resource type="Texture2D" uid="uid://b7vdib1l4fvmv" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/2.png" id="1055_37ts7"] +[ext_resource type="Texture2D" uid="uid://6p3a2xxh4vle" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/3.png" id="1056_q7q0i"] +[ext_resource type="Texture2D" uid="uid://dxcm3462m4my6" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/4.png" id="1057_la5wd"] +[ext_resource type="Texture2D" uid="uid://b28j1kgnc0xro" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/5.png" id="1058_voge0"] +[ext_resource type="Texture2D" uid="uid://dmnjnbsodlpon" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/6.png" id="1059_h8k05"] +[ext_resource type="Texture2D" uid="uid://t6pqq5x6jafs" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/7.png" id="1060_2uu24"] +[ext_resource type="Texture2D" uid="uid://gy1ugcpngt1p" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/8.png" id="1061_0ye5j"] +[ext_resource type="Texture2D" uid="uid://4t48tqnox4vr" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/9.png" id="1062_xfi5l"] +[ext_resource type="Texture2D" uid="uid://d2j6ubjov164f" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/10.png" id="1063_r3y8n"] +[ext_resource type="Texture2D" uid="uid://dop55jxd1okb8" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/11.png" id="1064_b5n4m"] +[ext_resource type="Texture2D" uid="uid://d3p62apuyj7l6" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/12.png" id="1065_b3sel"] +[ext_resource type="Texture2D" uid="uid://c7ryymjhjk2gv" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/13.png" id="1066_t25a7"] +[ext_resource type="Texture2D" uid="uid://cywr0736ooibx" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/14.png" id="1067_wv12g"] +[ext_resource type="Texture2D" uid="uid://dv4gc8w1p16gv" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/15.png" id="1068_ap1tk"] +[ext_resource type="Texture2D" uid="uid://rbsdh3wjiy4d" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/16.png" id="1069_sdjh1"] +[ext_resource type="Texture2D" uid="uid://d3308o8u5bb16" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/17.png" id="1070_6o5lc"] [resource] animations = [{ @@ -4939,4 +4957,63 @@ animations = [{ "loop": false, "name": &"c03_胖子游戏_胖子对半砍", "speed": 5.0 +}, { +"frames": [{ +"duration": 2.0, +"texture": ExtResource("1053_mhvgv") +}, { +"duration": 2.0, +"texture": ExtResource("1054_3vhq4") +}, { +"duration": 2.0, +"texture": ExtResource("1055_37ts7") +}, { +"duration": 2.0, +"texture": ExtResource("1056_q7q0i") +}, { +"duration": 1.0, +"texture": ExtResource("1057_la5wd") +}, { +"duration": 1.0, +"texture": ExtResource("1058_voge0") +}, { +"duration": 1.0, +"texture": ExtResource("1059_h8k05") +}, { +"duration": 1.0, +"texture": ExtResource("1060_2uu24") +}, { +"duration": 1.0, +"texture": ExtResource("1061_0ye5j") +}, { +"duration": 1.0, +"texture": ExtResource("1062_xfi5l") +}, { +"duration": 1.0, +"texture": ExtResource("1063_r3y8n") +}, { +"duration": 1.0, +"texture": ExtResource("1064_b5n4m") +}, { +"duration": 1.0, +"texture": ExtResource("1065_b3sel") +}, { +"duration": 1.0, +"texture": ExtResource("1066_t25a7") +}, { +"duration": 1.0, +"texture": ExtResource("1067_wv12g") +}, { +"duration": 1.0, +"texture": ExtResource("1068_ap1tk") +}, { +"duration": 1.0, +"texture": ExtResource("1069_sdjh1") +}, { +"duration": 1.0, +"texture": ExtResource("1070_6o5lc") +}], +"loop": false, +"name": &"c04_吕萍_木头人死亡", +"speed": 6.0 }] diff --git a/scene/character/player_animation_config.gd b/scene/character/player_animation_config.gd index dc321237..a3fadf62 100644 --- a/scene/character/player_animation_config.gd +++ b/scene/character/player_animation_config.gd @@ -56,6 +56,7 @@ var ANIMATION_CONFIG = { 20: [&"", Vector2.ONE, Vector2(2.5, -48.0), &"c02_吕萍_背靠呼吸", &""], 21: [&"", Vector2.ONE, Vector2(2.5, -48.0), &"c02_吕萍_背靠起身_屠宰间", &""], 22: [&"", Vector2.ONE, Vector2(341.0, -75.0), &"", &"c02_吕萍_风吹过"], + 23: [&"c04_吕萍_木头人死亡", Vector2.ONE, Vector2(0, -63.5)], }, "吕萍爬行": { diff --git a/scene/effect/c04_鬼打墙黑手.tscn b/scene/effect/c04_鬼打墙黑手.tscn new file mode 100644 index 00000000..83e6bc2f --- /dev/null +++ b/scene/effect/c04_鬼打墙黑手.tscn @@ -0,0 +1,185 @@ +[gd_scene load_steps=6 format=3 uid="uid://duvdtgkbiqtru"] + +[ext_resource type="Texture2D" uid="uid://b8tbug8n7o240" path="res://asset/art/gif/c04_鬼打墙/ux_手.png" id="4_70mrd"] + +[sub_resource type="Animation" id="Animation_gd1dm"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("黑手左:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-131, 253)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("黑手右:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(694, 244)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("黑手左:scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("黑手右:scale") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, 1)] +} + +[sub_resource type="Animation" id="Animation_oa0hm"] +resource_name = "双手捂屏幕" +length = 3.5 +step = 0.02 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("黑手左:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = false +tracks/0/keys = { +"times": PackedFloat32Array(0, 1.5, 3.06), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(-131, 253), Vector2(9, 217), Vector2(110, 201)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("黑手右:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = false +tracks/1/keys = { +"times": PackedFloat32Array(0, 1.42, 3.06), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(694, 244), Vector2(554, 216), Vector2(450, 190)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("黑手左:scale") +tracks/2/interp = 2 +tracks/2/loop_wrap = false +tracks/2/keys = { +"times": PackedFloat32Array(0, 2.96), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(0.8, 0.8), Vector2(1.7, 1.7)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("黑手右:scale") +tracks/3/interp = 2 +tracks/3/loop_wrap = false +tracks/3/keys = { +"times": PackedFloat32Array(0, 2.96), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(0.8, 0.8), Vector2(1.7, 1.7)] +} + +[sub_resource type="Animation" id="Animation_70mrd"] +resource_name = "双手离开屏幕" +length = 2.0 +step = 0.02 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("黑手左:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = false +tracks/0/keys = { +"times": PackedFloat32Array(0, 1.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(110, 201), Vector2(-199, 273)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("黑手右:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = false +tracks/1/keys = { +"times": PackedFloat32Array(0, 1.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(450, 190), Vector2(759, 273)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("黑手左:scale") +tracks/2/interp = 2 +tracks/2/loop_wrap = false +tracks/2/keys = { +"times": PackedFloat32Array(0, 1.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(1.7, 1.7), Vector2(1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("黑手右:scale") +tracks/3/interp = 2 +tracks/3/loop_wrap = false +tracks/3/keys = { +"times": PackedFloat32Array(0, 1.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(1.7, 1.7), Vector2(1, 1)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_43ipm"] +_data = { +&"RESET": SubResource("Animation_gd1dm"), +&"双手捂屏幕": SubResource("Animation_oa0hm"), +&"双手离开屏幕": SubResource("Animation_70mrd") +} + +[node name="黑手Effect" type="CanvasLayer"] + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_43ipm") +} + +[node name="黑手左" type="Sprite2D" parent="."] +position = Vector2(-131, 253) +texture = ExtResource("4_70mrd") +offset = Vector2(100, -50) + +[node name="黑手右" type="Sprite2D" parent="."] +position = Vector2(694, 244) +texture = ExtResource("4_70mrd") +offset = Vector2(-100, -50) +flip_h = true diff --git a/scene/entity/visible_static_body.gd b/scene/entity/visible_static_body.gd new file mode 100644 index 00000000..253c471a --- /dev/null +++ b/scene/entity/visible_static_body.gd @@ -0,0 +1,13 @@ +class_name VisibleStaticBody +extends StaticBody2D + + +func _ready() -> void: + _on_visibility_changed() + visibility_changed.connect(_on_visibility_changed) + + +func _on_visibility_changed() -> void: + var disabled = not is_visible_in_tree() + for c in get_children(): + c.set("disabled", disabled) diff --git a/scene/entity/visible_static_body.gd.uid b/scene/entity/visible_static_body.gd.uid new file mode 100644 index 00000000..1fcb2bb5 --- /dev/null +++ b/scene/entity/visible_static_body.gd.uid @@ -0,0 +1 @@ +uid://86rvkbnxd2ti diff --git a/scene/ground/ground_loader.gd b/scene/ground/ground_loader.gd index 87a6a937..ab102308 100644 --- a/scene/ground/ground_loader.gd +++ b/scene/ground/ground_loader.gd @@ -50,7 +50,7 @@ const GROUND_SCENE_PATH_DICT: Dictionary[String, Dictionary] = { "c04_s01": {"path": "uid://drjnu33pga6i5", "name": "父母房间"}, "c04_s02": {"path": "uid://4dog18klgvv6", "name": "二楼III"}, "c04_s03": {"path": "uid://cdqkn0de1skvq", "name": "院子III"}, - "c04_s04": {"path": "uid://bykwiuj02tcxa", "name": "鬼打墙"}, + "c04_s04": {"path": "uid://bykwiuj02tcxa", "name": "鬼打墙"}, # 鬼打墙场景没有使用;融合在 三楼III 中 "c04_s05": {"path": "uid://cmbg3y18btteg", "name": "客厅"}, "c04_s06": {"path": "uid://dgcxqcu5k6tvt", "name": "小蝶房间"}, "c04_s07": {"path": "uid://b6cfu5rs88pql", "name": "佛堂"}, diff --git a/scene/ground/scene/c04/s04_鬼打墙.gd b/scene/ground/scene/c04/s04_鬼打墙.gd index 21463fc3..320c576e 100644 --- a/scene/ground/scene/c04/s04_鬼打墙.gd +++ b/scene/ground/scene/c04/s04_鬼打墙.gd @@ -23,4 +23,52 @@ func _setup_node_reference() -> void: func _on_ground_ready() -> void: - pass + Util.timer(1.2, SceneManager.pop_os_with_str.bind("c04_鬼打墙_再次开门")) + + +func ambush_door1() -> void: + $"../DeployLayer/Ambush门1".enabled = false + _show_wall(1) + + +func ambush_door2() -> void: + $"../DeployLayer/Ambush门2".enabled = false + _show_wall(2) + + +func ambush_door3() -> void: + $"../DeployLayer/Ambush门3".enabled = false + _show_wall(3) + + +var wall_count := 0 + + +func _show_wall(id: int) -> void: + wall_count += 1 + var wall = get_node("../DeployLayer/砖墙" + str(id)) + wall.show() + wall.modulate.a = 0.0 + create_tween().tween_property(wall, "modulate:a", 1.0, 1.0) + #TODO + $"Sfx墙体浮现".play() + SceneManager.pop_debug_dialog_info("音效", "墙体浮现音效") + # 烛光抖动 + var candle_l = get_node("../DeployLayer/蜡烛光" + str(id)) + var candle_r = get_node("../DeployLayer/蜡烛光" + str(id + 1)) + var tween = create_tween() + tween.tween_property(candle_l, "energy", 0.2, 0.8) + tween.parallel().tween_property(candle_r, "energy", 0.3, 0.7) + tween.tween_property(candle_l, "energy", 0.6, 0.7) + tween.parallel().tween_property(candle_r, "energy", 0.6, 0.8) + if wall_count == 3: + _game_success() + +func _game_success() -> void: + SceneManager.lock_player() + # show + await Util.wait(0.5) + await SceneManager.pop_os_with_str("c04_鬼打墙_全部交互完") + await Util.wait(0.5) + await SceneManager.pop_os_with_str("c04_鬼打墙_捂眼") + diff --git a/scene/ground/scene/c04/s04_鬼打墙.tscn b/scene/ground/scene/c04/s04_鬼打墙.tscn index 953724df..fa479273 100644 --- a/scene/ground/scene/c04/s04_鬼打墙.tscn +++ b/scene/ground/scene/c04/s04_鬼打墙.tscn @@ -1,54 +1,18 @@ -[gd_scene load_steps=17 format=3 uid="uid://bykwiuj02tcxa"] +[gd_scene load_steps=12 format=3 uid="uid://bykwiuj02tcxa"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_q48aa"] [ext_resource type="Script" uid="uid://dxu4ss0r68f5d" path="res://scene/ground/scene/c04/s04_鬼打墙.gd" id="2_vek4i"] [ext_resource type="AudioStream" uid="uid://6oc0cgc3mbqb" path="res://asset/audio/sfx/环境音/白噪音/白噪声楼道2.ogg" id="3_ka5ik"] [ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_ynt5w"] [ext_resource type="Texture2D" uid="uid://dgflh16vwwgpr" path="res://asset/art/gif/c04_鬼打墙/鬼打墙.png" id="5_4rr4q"] +[ext_resource type="AudioStream" uid="uid://mio13gkcrv7q" path="res://asset/audio/effect/action/bookOpen.ogg" id="5_6q2e1"] [ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="6_0hnsl"] +[ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="7_vek4i"] +[ext_resource type="Texture2D" uid="uid://b7gyapghy3tsy" path="res://asset/art/neutral_point_light.png" id="8_vek4i"] [ext_resource type="Texture2D" uid="uid://vktpw07jrmnb" path="res://asset/art/gif/c04_鬼打墙/鬼打墙_砖墙.png" id="9_6q2e1"] -[ext_resource type="Texture2D" uid="uid://bp84w8keuelyj" path="res://asset/art/scene/c02/s10_空房间/e_蜡烛-sheet.png" id="11_t03n4"] -[ext_resource type="Texture2D" uid="uid://cylsq5cvhlp18" path="res://asset/art/tool/point_light.png" id="12_vt3n2"] -[ext_resource type="Texture2D" uid="uid://djoft6600kly6" path="res://asset/art/scene/c03/s01_三楼/fg_前景.png" id="20_k8fkv"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"] -[sub_resource type="AtlasTexture" id="AtlasTexture_chbaa"] -atlas = ExtResource("11_t03n4") -region = Rect2(0, 0, 6, 14) - -[sub_resource type="AtlasTexture" id="AtlasTexture_th1ek"] -atlas = ExtResource("11_t03n4") -region = Rect2(6, 0, 6, 14) - -[sub_resource type="AtlasTexture" id="AtlasTexture_to1d1"] -atlas = ExtResource("11_t03n4") -region = Rect2(12, 0, 6, 14) - -[sub_resource type="AtlasTexture" id="AtlasTexture_nx6jy"] -atlas = ExtResource("11_t03n4") -region = Rect2(18, 0, 6, 14) - -[sub_resource type="SpriteFrames" id="SpriteFrames_w4rk2"] -animations = [{ -"frames": [{ -"duration": 3.0, -"texture": SubResource("AtlasTexture_chbaa") -}, { -"duration": 3.0, -"texture": SubResource("AtlasTexture_th1ek") -}, { -"duration": 3.0, -"texture": SubResource("AtlasTexture_to1d1") -}, { -"duration": 3.0, -"texture": SubResource("AtlasTexture_nx6jy") -}], -"loop": true, -"name": &"default", -"speed": 10.0 -}] - [node name="S04" type="Node2D"] metadata/_edit_horizontal_guides_ = [98.0, 120.0] @@ -74,6 +38,12 @@ mode = "场景背景音" "感应玩家操作" = false metadata/_custom_type_script = "uid://rq6w1vuhuq1m" +[node name="Sfx墙体浮现" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"] +stream = ExtResource("5_6q2e1") +bus = &"game_sfx" +script = ExtResource("4_ynt5w") +metadata/_custom_type_script = "uid://rq6w1vuhuq1m" + [node name="BGSprite2D" parent="Ground" index="2"] light_mask = 5 position = Vector2(0, -24) @@ -82,93 +52,76 @@ offset = Vector2(0, -100) [node name="portal_left" parent="Ground/DeployLayer" index="0"] position = Vector2(34, 8) +enabled = false [node name="portal_right" parent="Ground/DeployLayer" index="1"] position = Vector2(697, 18) -target_scene = "c02_s06" -target_portal = "3" +enabled = false [node name="portal_1" parent="Ground/DeployLayer" index="2" instance=ExtResource("6_0hnsl")] -position = Vector2(515, 14) +position = Vector2(332, 1) +debug_note = "传送点" +enabled = false portal_name = "1" -[node name="小蜡烛系列" type="Node2D" parent="Ground/DeployLayer" index="3"] -position = Vector2(0, 6) +[node name="砖墙1" type="Sprite2D" parent="Ground/DeployLayer" index="3"] +position = Vector2(282, -7) +texture = ExtResource("9_6q2e1") -[node name="小蜡烛" type="AnimatedSprite2D" parent="Ground/DeployLayer/小蜡烛系列"] -self_modulate = Color(0.611765, 0.611765, 0.611765, 1) -position = Vector2(680, 48) -sprite_frames = SubResource("SpriteFrames_w4rk2") -autoplay = "default" - -[node name="小蜡烛PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/小蜡烛系列/小蜡烛"] -position = Vector2(0, -12.8172) -color = Color(0.999971, 0.912551, 0.842208, 1) -energy = 1.2 -blend_mode = 2 -texture = ExtResource("12_vt3n2") -texture_scale = 0.3 - -[node name="小蜡烛2" type="AnimatedSprite2D" parent="Ground/DeployLayer/小蜡烛系列"] -self_modulate = Color(0.611765, 0.611765, 0.611765, 1) -position = Vector2(585, 51) -sprite_frames = SubResource("SpriteFrames_w4rk2") -autoplay = "default" - -[node name="小蜡烛PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/小蜡烛系列/小蜡烛2"] -position = Vector2(0, -12.8172) -color = Color(0.999971, 0.912551, 0.842208, 1) -energy = 1.2 -blend_mode = 2 -texture = ExtResource("12_vt3n2") -texture_scale = 0.3 - -[node name="小蜡烛3" type="AnimatedSprite2D" parent="Ground/DeployLayer/小蜡烛系列"] -self_modulate = Color(0.611765, 0.611765, 0.611765, 1) -position = Vector2(283, -3) -sprite_frames = SubResource("SpriteFrames_w4rk2") -autoplay = "default" - -[node name="小蜡烛PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/小蜡烛系列/小蜡烛3"] -position = Vector2(0, -12.8172) -color = Color(0.999971, 0.912551, 0.842208, 1) -energy = 1.2 -blend_mode = 2 -texture = ExtResource("12_vt3n2") -texture_scale = 0.3 - -[node name="小蜡烛4" type="AnimatedSprite2D" parent="Ground/DeployLayer/小蜡烛系列"] -self_modulate = Color(0.611765, 0.611765, 0.611765, 1) -position = Vector2(106, 4) -sprite_frames = SubResource("SpriteFrames_w4rk2") -autoplay = "default" - -[node name="小蜡烛PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/小蜡烛系列/小蜡烛4"] -position = Vector2(0, -12.8172) -color = Color(0.999971, 0.912551, 0.842208, 1) -energy = 1.2 -blend_mode = 2 -texture = ExtResource("12_vt3n2") -texture_scale = 0.3 - -[node name="小蜡烛5" type="AnimatedSprite2D" parent="Ground/DeployLayer/小蜡烛系列"] -self_modulate = Color(0.611765, 0.611765, 0.611765, 1) -position = Vector2(223, -49) -sprite_frames = SubResource("SpriteFrames_w4rk2") -autoplay = "default" - -[node name="小蜡烛PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/小蜡烛系列/小蜡烛5"] -position = Vector2(0, -12.8172) -color = Color(0.999971, 0.912551, 0.842208, 1) -energy = 1.2 -blend_mode = 2 -texture = ExtResource("12_vt3n2") -texture_scale = 0.3 - -[node name="砖墙" type="Sprite2D" parent="Ground/DeployLayer" index="4"] +[node name="砖墙2" type="Sprite2D" parent="Ground/DeployLayer" index="4"] position = Vector2(368, -8) texture = ExtResource("9_6q2e1") +[node name="砖墙3" type="Sprite2D" parent="Ground/DeployLayer" index="5"] +position = Vector2(451, -8) +texture = ExtResource("9_6q2e1") + +[node name="Ambush门1" parent="Ground/DeployLayer" index="6" instance=ExtResource("7_vek4i")] +position = Vector2(163, -27) +trigger_mode = "interact" +one_shot = false +hook_method = "ambush_door1" + +[node name="Ambush门2" parent="Ground/DeployLayer" index="7" instance=ExtResource("7_vek4i")] +position = Vector2(249, -26) +trigger_mode = "interact" +one_shot = false +hook_method = "ambush_door2" + +[node name="Ambush门3" parent="Ground/DeployLayer" index="8" instance=ExtResource("7_vek4i")] +position = Vector2(330, -26) +trigger_mode = "interact" +one_shot = false +hook_method = "ambush_door3" + +[node name="蜡烛光1" type="PointLight2D" parent="Ground/DeployLayer" index="9"] +position = Vector2(122, 36) +color = Color(0.989374, 0.782717, 0.696771, 1) +energy = 0.5 +texture = ExtResource("8_vek4i") +texture_scale = 0.4 + +[node name="蜡烛光2" type="PointLight2D" parent="Ground/DeployLayer" index="10"] +position = Vector2(206, 35) +color = Color(0.989374, 0.782717, 0.696771, 1) +energy = 0.5 +texture = ExtResource("8_vek4i") +texture_scale = 0.4 + +[node name="蜡烛光3" type="PointLight2D" parent="Ground/DeployLayer" index="11"] +position = Vector2(290, 36) +color = Color(0.989374, 0.782717, 0.696771, 1) +energy = 0.5 +texture = ExtResource("8_vek4i") +texture_scale = 0.4 + +[node name="蜡烛光4" type="PointLight2D" parent="Ground/DeployLayer" index="12"] +position = Vector2(373, 35) +color = Color(0.989374, 0.782717, 0.696771, 1) +energy = 0.5 +texture = ExtResource("8_vek4i") +texture_scale = 0.4 + [node name="MainPlayer" parent="Ground" index="5"] position = Vector2(34, 98) catty_light_energy = 0.5 @@ -178,11 +131,8 @@ facing_direction = Vector2(1, 0) [node name="CameraFocusMarker" parent="Ground" index="6"] limit_right = 749 -[node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] -texture = ExtResource("20_k8fkv") - [node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] -points = PackedVector2Array(30, 151, 723, 150) +points = PackedVector2Array(30, 151, 540, 150) [node name="DirectionalLight2D" parent="Ground" index="8"] visible = false diff --git a/scene/ground/scene/c04/s05_客厅.tscn b/scene/ground/scene/c04/s05_客厅.tscn index 6af2113e..334817cb 100644 --- a/scene/ground/scene/c04/s05_客厅.tscn +++ b/scene/ground/scene/c04/s05_客厅.tscn @@ -70,22 +70,37 @@ updater_ease_duration = 0.0 updater_stages = Array[int]([0, 1]) metadata/_custom_type_script = "uid://0wjaho6qkg6s" -[node name="Pro木头人" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="3"] -position = Vector2(210, 57) -sprite_frames = ExtResource("6_llv1p") -animation = &"木头人游戏1_查看" -script = ExtResource("7_sprhu") -metadata/_custom_type_script = "uid://cphfob11f7atx" - -[node name="Closeup墙上儿童画" parent="Ground/DeployLayer" index="4" instance=ExtResource("10_2a7rr")] +[node name="Closeup墙上儿童画" parent="Ground/DeployLayer" index="3" instance=ExtResource("10_2a7rr")] position = Vector2(338.5, -5) texture = ExtResource("11_3cw04") packed_scene = ExtResource("11_6pvlg") -[node name="Closeup烧香游戏" parent="Ground/DeployLayer" index="5" instance=ExtResource("10_2a7rr")] +[node name="Closeup烧香游戏" parent="Ground/DeployLayer" index="4" instance=ExtResource("10_2a7rr")] position = Vector2(190, 36) packed_scene = ExtResource("13_3cw04") +[node name="Pro木头人1" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="5"] +position = Vector2(510, 41) +sprite_frames = ExtResource("6_llv1p") +animation = &"木头人游戏1_进门动作" +script = ExtResource("7_sprhu") +autostart = false +metadata/_custom_type_script = "uid://cphfob11f7atx" + +[node name="Pro木头人2" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="6"] +position = Vector2(338, 39) +sprite_frames = ExtResource("6_llv1p") +animation = &"木头人游戏2_进门动作" +script = ExtResource("7_sprhu") +metadata/_custom_type_script = "uid://cphfob11f7atx" + +[node name="Pro木头人3" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="7"] +position = Vector2(190, 50) +sprite_frames = ExtResource("6_llv1p") +animation = &"木头人游戏3_进门动作" +script = ExtResource("7_sprhu") +metadata/_custom_type_script = "uid://cphfob11f7atx" + [node name="MainPlayer" parent="Ground" index="5"] position = Vector2(63, 95) catty_light_energy = 0.5 diff --git a/scene/ground/scene/c04/s08_三楼III.gd b/scene/ground/scene/c04/s08_三楼III.gd index a0ecff0a..fc564317 100644 --- a/scene/ground/scene/c04/s08_三楼III.gd +++ b/scene/ground/scene/c04/s08_三楼III.gd @@ -4,7 +4,7 @@ extends AnimationRoot # 覆盖该方法 func _default_data() -> Dictionary: - return {} + return {"c04_ghost_trapped_suprised": false} func _ready() -> void: @@ -14,13 +14,141 @@ func _ready() -> void: #region node_reference +var interactable家门: Interactable2D #endregion # 读取设置变量名 func _setup_node_reference() -> void: - pass + interactable家门 = $"../DeployLayer/Interactable家门" + interactable家门.interacted.connect(_on_door_interacted) func _on_ground_ready() -> void: - pass \ No newline at end of file + var trap_stage = EventManager.get_stage("c04_ghost_trapped") + if trap_stage == 1: + $"../DeployLayer/鬼打墙两侧纸人".show() + if not data["c04_ghost_trapped_suprised"]: + set_data("c04_ghost_trapped_suprised", true) + Util.timer(1.2, SceneManager.pop_os_with_str.bind("c04_鬼打墙_首次传送")) + elif trap_stage == 2: + # 开始鬼打墙 + setup_trap() + + +func _on_door_interacted() -> void: + SceneManager.lock_player() + # c04_ghost_trapped: 0:初始化 1:第一次开门 2:进入鬼打墙场景 3:鬼打墙结束 4:排队纸人歪头 + var trap_stage = EventManager.get_stage("c04_ghost_trapped") + if trap_stage == 0: + SceneManager.unlock_player() + EventManager.set_stage("c04_ghost_trapped", 1) + SceneManager.get_ground_loader().transition_to_scene("c04_s08", "1") + elif trap_stage == 1 or trap_stage == 2: + SceneManager.unlock_player() + EventManager.set_stage("c04_ghost_trapped", 2) + SceneManager.get_ground_loader().transition_to_scene("c04_s08", "1") + elif trap_stage == 3: + SceneManager.unlock_player() + $"Sfx纸人咔嚓转头".play() + EventManager.set_stage("c04_ghost_trapped", 4) + SceneManager.get_ground_loader().transition_to_scene("c04_s05", "left") + elif trap_stage == 4: + SceneManager.unlock_player() + SceneManager.get_ground_loader().transition_to_scene("c04_s05", "left") + +var camera_rect +var player_rect + +func setup_trap() -> void: + # 设置活动范围 + # 190-700 + camera_rect = SceneManager.get_camera_marker().default_camera_rect + player_rect = SceneManager.get_player().player_movement_rect + SceneManager.get_camera_marker().apply_limits(Rect2i(190, -158, 510, 316)) + SceneManager.get_player().player_movement_rect = Rect2(195, -158, 500, 316) + $"../鬼打墙Layer".show() + $"../DeployLayer".hide() + # os + Util.timer(1.2, SceneManager.pop_os_with_str.bind("c04_鬼打墙_再次开门")) + + +func ambush_door1() -> void: + $"../鬼打墙Layer/Ambush门1".enabled = false + _show_wall(1) + + +func ambush_door2() -> void: + $"../鬼打墙Layer/Ambush门2".enabled = false + _show_wall(2) + + +func ambush_door3() -> void: + $"../鬼打墙Layer/Ambush门3".enabled = false + _show_wall(3) + + +var wall_count := 0 + + +func _show_wall(id: int) -> void: + wall_count += 1 + var wall = get_node("../鬼打墙Layer/砖墙" + str(id)) + wall.show() + wall.modulate.a = 0.0 + create_tween().tween_property(wall, "modulate:a", 1.0, 1.0) + #TODO + $"Sfx墙体浮现".play() + SceneManager.pop_debug_dialog_info("音效", "墙体浮现音效") + # 烛光抖动 + var candle_l = get_node("../鬼打墙Layer/蜡烛光" + str(id)) + var candle_r = get_node("../鬼打墙Layer/蜡烛光" + str(id + 1)) + var tween = create_tween() + tween.tween_property(candle_l, "energy", 0.2, 0.8) + tween.parallel().tween_property(candle_r, "energy", 0.3, 0.7) + tween.tween_property(candle_l, "energy", 0.6, 0.7) + tween.parallel().tween_property(candle_r, "energy", 0.6, 0.8) + if wall_count == 3: + _game_success() + + +func _game_success() -> void: + SceneManager.lock_player() + # show + await Util.wait(0.5) + await SceneManager.pop_os_with_str("c04_鬼打墙_全部交互完") + await Util.wait(0.5) + await SceneManager.pop_os_with_str("c04_鬼打墙_捂眼") + await Util.wait(1.0) + var animation_player = $"鬼打墙黑手Effect/AnimationPlayer" + animation_player.play("双手捂屏幕") + # 重置镜头与玩家活动范围 + SceneManager.get_player().player_movement_rect = player_rect + var camera = SceneManager.get_camera_marker() + # 镜头锁定玩家(镜头逐渐移动过去) 提高速度保证紧密贴紧边缘 + camera.speed = 100.0 + var tween = create_tween() + tween.tween_property(camera, "limit_right", camera_rect.size.x + 250.0, 4.0) + await animation_player.animation_finished + await Util.wait(2.0) + $"../DeployLayer".show() + _hide_trap_layer() + await Util.wait(1.5) + animation_player.play("双手离开屏幕") + camera.speed = 2.0 + tween = create_tween() + tween.tween_property(camera, "limit_right", camera_rect.size.x, 2.0) + EventManager.set_stage("c04_ghost_trapped", 3) + await Util.wait(1.0) + SceneManager.unlock_player() + + +func _hide_trap_layer() -> void: + var l = $"../鬼打墙Layer" + var tween = create_tween() + tween.tween_property(l, "modulate:a", 0.0, 1.0) + tween.parallel().tween_property(l.get_node("蜡烛光1"), "energy", 0.0, 1.0) + tween.parallel().tween_property(l.get_node("蜡烛光2"), "energy", 0.0, 1.0) + tween.parallel().tween_property(l.get_node("蜡烛光3"), "energy", 0.0, 1.0) + tween.parallel().tween_property(l.get_node("蜡烛光4"), "energy", 0.0, 1.0) + tween.tween_callback(l.hide) diff --git a/scene/ground/scene/c04/s08_三楼III.tscn b/scene/ground/scene/c04/s08_三楼III.tscn index 699495f7..a865f35c 100644 --- a/scene/ground/scene/c04/s08_三楼III.tscn +++ b/scene/ground/scene/c04/s08_三楼III.tscn @@ -1,12 +1,17 @@ -[gd_scene load_steps=30 format=3 uid="uid://dcg8ekvhqxjjs"] +[gd_scene load_steps=48 format=3 uid="uid://dcg8ekvhqxjjs"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_rv7yf"] [ext_resource type="Script" uid="uid://t2p7to688wd3" path="res://scene/ground/scene/c04/s08_三楼III.gd" id="2_ryonc"] [ext_resource type="AudioStream" uid="uid://6oc0cgc3mbqb" path="res://asset/audio/sfx/环境音/白噪音/白噪声楼道2.ogg" id="3_3myjn"] [ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_q3if8"] [ext_resource type="Texture2D" uid="uid://cpjd3dqri51fq" path="res://asset/art/scene/c03/s01_三楼/bg_三楼走廊.png" id="5_5htbk"] +[ext_resource type="PackedScene" uid="uid://duvdtgkbiqtru" path="res://scene/effect/c04_鬼打墙黑手.tscn" id="5_44hgy"] +[ext_resource type="AudioStream" uid="uid://mio13gkcrv7q" path="res://asset/audio/effect/action/bookOpen.ogg" id="5_hrm8u"] +[ext_resource type="PackedScene" uid="uid://cw3q5pvciumil" path="res://scene/entity/interactable.tscn" id="6_a3f3m"] [ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="6_dc4ka"] +[ext_resource type="Texture2D" uid="uid://bc4lpa8aao60n" path="res://asset/art/ui/action_mark/传送.png" id="7_7u3rr"] [ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="7_acpio"] +[ext_resource type="AudioStream" uid="uid://dxx5lu2j88c7x" path="res://asset/audio/sfx/交互/第二章/sfx_s03_咔嚓转头.ogg" id="7_romec"] [ext_resource type="Texture2D" uid="uid://dagy852q0fduh" path="res://asset/art/scene/c03/s01_三楼/e_治病木牌.png" id="8_c0fub"] [ext_resource type="Texture2D" uid="uid://bp84w8keuelyj" path="res://asset/art/scene/c02/s10_空房间/e_蜡烛-sheet.png" id="11_wksgj"] [ext_resource type="Texture2D" uid="uid://cylsq5cvhlp18" path="res://asset/art/tool/point_light.png" id="12_oyiof"] @@ -16,6 +21,7 @@ [ext_resource type="PackedScene" uid="uid://dqkxiqbq83cmq" path="res://scene/entity/closeup.tscn" id="15_frave"] [ext_resource type="Texture2D" uid="uid://b7t2sfe5ugtsc" path="res://asset/art/scene/c03/引导纸人/指引纸人3.png" id="16_3cwaw"] [ext_resource type="PackedScene" uid="uid://bb6rbriqc27pl" path="res://scene/ground/script/c04/s08_closeup煮肉游戏.tscn" id="16_wdxyg"] +[ext_resource type="Script" uid="uid://0wjaho6qkg6s" path="res://manager/event_manager/event_binder.gd" id="17_eu2wc"] [ext_resource type="SpriteFrames" uid="uid://bbey3pnvbxqmr" path="res://asset/art/gif/c04_煮肉游戏/c04_煮肉游戏_frames.tres" id="17_mavq2"] [ext_resource type="Script" uid="uid://cphfob11f7atx" path="res://addons/property-inspector/pro_animation_sprite2d/pro_animated_sprite.gd" id="18_ryonc"] [ext_resource type="Script" uid="uid://tgupfwhdlomy" path="res://scene/ground/script/c04/s08_event陆蝶演出.gd" id="19_cl576"] @@ -23,6 +29,14 @@ [ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="20_cl576"] [ext_resource type="Texture2D" uid="uid://vf0gl8l7hrif" path="res://asset/art/gif/c04_三楼走廊擦墙演出/擦墙字.png" id="21_2rmvt"] [ext_resource type="SpriteFrames" uid="uid://pf7mglnhuaab" path="res://asset/art/gif/c04_三楼走廊擦墙演出/c04_三楼走廊擦墙演出_frames.tres" id="22_a3f3m"] +[ext_resource type="Texture2D" uid="uid://c7hh6cvkahswt" path="res://asset/art/scene/c03/引导纸人/指引纸人4歪头.png" id="22_camrr"] +[ext_resource type="Texture2D" uid="uid://b7gyapghy3tsy" path="res://asset/art/neutral_point_light.png" id="23_a3f3m"] +[ext_resource type="Script" uid="uid://86rvkbnxd2ti" path="res://scene/entity/visible_static_body.gd" id="27_w5p20"] +[ext_resource type="Texture2D" uid="uid://bxernv6qyitdn" path="res://asset/art/scene/c03/引导纸人/指引纸人1.png" id="28_eu2wc"] +[ext_resource type="Texture2D" uid="uid://ci0jxl74wek65" path="res://asset/art/scene/c03/引导纸人/指引纸人2.png" id="29_lliag"] +[ext_resource type="Texture2D" uid="uid://bxmc7pas3b6wa" path="res://asset/art/scene/c03/引导纸人/指引纸人4.png" id="30_44hgy"] +[ext_resource type="Texture2D" uid="uid://vktpw07jrmnb" path="res://asset/art/gif/c04_鬼打墙/鬼打墙_砖墙.png" id="32_44hgy"] +[ext_resource type="Texture2D" uid="uid://dgflh16vwwgpr" path="res://asset/art/gif/c04_鬼打墙/鬼打墙.png" id="32_hrm8u"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"] @@ -62,6 +76,21 @@ animations = [{ "speed": 10.0 }] +[sub_resource type="Animation" id="Animation_a3f3m"] +resource_name = "陆仁擦肩走过" +length = 6.0 + +[sub_resource type="Animation" id="Animation_7u3rr"] +length = 0.001 + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_7u3rr"] +_data = { +&"RESET": SubResource("Animation_7u3rr"), +&"陆仁擦肩走过": SubResource("Animation_a3f3m") +} + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_hrm8u"] + [node name="S08" type="Node2D"] metadata/_edit_horizontal_guides_ = [98.0] @@ -87,6 +116,20 @@ mode = "场景背景音" "感应玩家操作" = false metadata/_custom_type_script = "uid://rq6w1vuhuq1m" +[node name="Sfx墙体浮现" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"] +stream = ExtResource("5_hrm8u") +bus = &"game_sfx" +script = ExtResource("4_q3if8") +metadata/_custom_type_script = "uid://rq6w1vuhuq1m" + +[node name="鬼打墙黑手Effect" parent="Ground/AnimationPlayer" index="2" instance=ExtResource("5_44hgy")] + +[node name="Sfx纸人咔嚓转头" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="3"] +stream = ExtResource("7_romec") +bus = &"game_sfx" +script = ExtResource("4_q3if8") +metadata/_custom_type_script = "uid://rq6w1vuhuq1m" + [node name="BGSprite2D" parent="Ground" index="2"] light_mask = 5 position = Vector2(0, -24) @@ -102,36 +145,40 @@ target_scene = "c02_s06" target_portal = "3" [node name="portal_1" parent="Ground/DeployLayer" index="2" instance=ExtResource("6_dc4ka")] -position = Vector2(515, 12) -debug_note = "3012" +position = Vector2(514, 18) +debug_note = "3012门口传送点" +enabled = false portal_name = "1" -target_scene = "c04_s04" -target_portal = "1" -status = "locked" -prop_key = "prop_3012钥匙" -[node name="Note治病木牌" parent="Ground/DeployLayer" index="3" instance=ExtResource("7_acpio")] +[node name="Interactable家门" parent="Ground/DeployLayer" index="3" instance=ExtResource("6_a3f3m")] +unique_name_in_owner = true +position = Vector2(515, -31) +first_interact_os_key = "c04_鬼打墙_首次开门" +matched_sign_texture = ExtResource("7_7u3rr") +one_shot = false + +[node name="Note治病木牌" parent="Ground/DeployLayer" index="4" instance=ExtResource("7_acpio")] position = Vector2(456, 47) texture = ExtResource("8_c0fub") title_filter = "c03" note_key = "c03_s01_门口看病牌子" -[node name="Note砖门" parent="Ground/DeployLayer" index="4" instance=ExtResource("7_acpio")] +[node name="Note砖门" parent="Ground/DeployLayer" index="5" instance=ExtResource("7_acpio")] position = Vector2(347, 0) title_filter = "c03" note_key = "c03_s01_砖门" -[node name="Note杂物" parent="Ground/DeployLayer" index="5" instance=ExtResource("7_acpio")] +[node name="Note杂物" parent="Ground/DeployLayer" index="6" instance=ExtResource("7_acpio")] position = Vector2(246, -2) title_filter = "c03" note_key = "c03_s01_杂物" -[node name="Note封住木门" parent="Ground/DeployLayer" index="6" instance=ExtResource("7_acpio")] +[node name="Note封住木门" parent="Ground/DeployLayer" index="7" instance=ExtResource("7_acpio")] position = Vector2(48, 0) title_filter = "c03" note_key = "c03_s01_封住木门" -[node name="小蜡烛系列" type="Node2D" parent="Ground/DeployLayer" index="7"] +[node name="小蜡烛系列" type="Node2D" parent="Ground/DeployLayer" index="8"] position = Vector2(0, 6) [node name="小蜡烛" type="AnimatedSprite2D" parent="Ground/DeployLayer/小蜡烛系列"] @@ -204,7 +251,7 @@ blend_mode = 2 texture = ExtResource("12_oyiof") texture_scale = 0.3 -[node name="煤油灯2" type="Sprite2D" parent="Ground/DeployLayer" index="8"] +[node name="煤油灯2" type="Sprite2D" parent="Ground/DeployLayer" index="9"] position = Vector2(469, 2) texture = ExtResource("13_62482") @@ -222,17 +269,53 @@ energy = 2.0 blend_mode = 2 texture = ExtResource("15_4ne8o") -[node name="纸人" type="Sprite2D" parent="Ground/DeployLayer" index="9"] +[node name="纸人" type="Sprite2D" parent="Ground/DeployLayer" index="10"] position = Vector2(637, 25) scale = Vector2(0.8, 0.8) texture = ExtResource("16_3cwaw") flip_h = true -[node name="Closeup煮肉游戏" parent="Ground/DeployLayer" index="10" instance=ExtResource("15_frave")] +[node name="EventBinder" type="Node" parent="Ground/DeployLayer/纸人"] +script = ExtResource("17_eu2wc") +updater_event = &"c04_ghost_trapped" +updater_mode = "shower" +updater_ease_duration = 0.0 +updater_stages = Array[int]([0]) +metadata/_custom_type_script = "uid://0wjaho6qkg6s" + +[node name="排队纸人" type="Sprite2D" parent="Ground/DeployLayer" index="11"] +position = Vector2(655, 25) +scale = Vector2(0.8, 0.8) +texture = ExtResource("30_44hgy") +flip_h = true + +[node name="EventBinder" type="Node" parent="Ground/DeployLayer/排队纸人"] +script = ExtResource("17_eu2wc") +updater_event = &"c04_ghost_trapped" +updater_mode = "shower" +updater_ease_duration = 0.0 +updater_stages = Array[int]([3]) +metadata/_custom_type_script = "uid://0wjaho6qkg6s" + +[node name="排队纸人_歪头" type="Sprite2D" parent="Ground/DeployLayer" index="12"] +position = Vector2(655, 25) +scale = Vector2(0.8, 0.8) +texture = ExtResource("22_camrr") +flip_h = true + +[node name="EventBinder" type="Node" parent="Ground/DeployLayer/排队纸人_歪头"] +script = ExtResource("17_eu2wc") +updater_event = &"c04_ghost_trapped" +updater_mode = "shower" +updater_ease_duration = 0.0 +updater_stages = Array[int]([4]) +metadata/_custom_type_script = "uid://0wjaho6qkg6s" + +[node name="Closeup煮肉游戏" parent="Ground/DeployLayer" index="13" instance=ExtResource("15_frave")] position = Vector2(126, 12) packed_scene = ExtResource("16_wdxyg") -[node name="Pro灶台" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="11"] +[node name="Pro灶台" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="14"] position = Vector2(124.5, 28.5) sprite_frames = ExtResource("17_mavq2") animation = &"三楼走廊互动动画_灶台冒烟烧火" @@ -241,7 +324,7 @@ frame_progress = 0.567797 script = ExtResource("18_ryonc") metadata/_custom_type_script = "uid://cphfob11f7atx" -[node name="Event陆蝶演出" type="Node2D" parent="Ground/DeployLayer" index="12"] +[node name="Event陆蝶演出" type="Node2D" parent="Ground/DeployLayer" index="15"] script = ExtResource("19_cl576") event_name = &"c04_ghost_trapped" event_stages = Array[int]([0]) @@ -249,63 +332,101 @@ pre_event_name = &"current_chapter_stage" pre_event_stages = Array[int]([4]) metadata/_custom_type_script = "uid://bkkiyk5jkdw4d" +[node name="AnimationPlayer" type="AnimationPlayer" parent="Ground/DeployLayer/Event陆蝶演出"] +libraries = { +&"": SubResource("AnimationLibrary_7u3rr") +} + [node name="Ambush陆蝶演出" parent="Ground/DeployLayer/Event陆蝶演出" instance=ExtResource("20_cl576")] position = Vector2(535, 31) +enter_affected_by_visibility = true one_shot = false [node name="墙上的字" type="Sprite2D" parent="Ground/DeployLayer/Event陆蝶演出"] texture = ExtResource("21_2rmvt") -[node name="Pro陆蝶" type="AnimatedSprite2D" parent="Ground/DeployLayer/Event陆蝶演出"] -position = Vector2(370, 26) -sprite_frames = ExtResource("22_a3f3m") -animation = &"陆仁行走1" -script = ExtResource("18_ryonc") -action_configs = Array[Dictionary]([{ -"animation_intro": &"陆仁坐下", -&"animation_next": "陆仁艰难站起", -"animation_wait_time": 0.0, -"intro_loop": 1 -}, { -"animation_intro": "陆仁艰难站起", -&"animation_next": "陆仁行走", -"animation_wait_time": 0.0, -"intro_loop": 1 -}, { -"animation_intro": "陆仁行走", -&"animation_next": "陆仁回头", -"animation_wait_time": 0.0, -"intro_loop": 1 -}]) -move_configs = Array[Dictionary]([{ -"animation": "陆仁行走1", -"animation_next": "陆仁回头", -"duration": 1e+07, -"movement_x": 80.0, -"velocity": Vector2(70, 0) -}, { -"animation": "陆仁回头", -"animation_next": "陆仁行走2", -"duration": 1e+07, -"movement_x": 210.0, -"velocity": Vector2(70, 0) -}, { -"animation": &"陆仁行走2", -"animation_next": "", -"duration": 1e+07, -"movement_x": 300.0, -"velocity": Vector2(70, 0) -}]) -metadata/_custom_type_script = "uid://cphfob11f7atx" - -[node name="小小蝶" type="AnimatedSprite2D" parent="Ground/DeployLayer/Event陆蝶演出/Pro陆蝶"] +[node name="小小小蝶" type="AnimatedSprite2D" parent="Ground/DeployLayer/Event陆蝶演出"] visible = false +position = Vector2(349, 0) sprite_frames = ExtResource("22_a3f3m") animation = &"小小蝶" autoplay = "小小蝶" script = ExtResource("18_ryonc") metadata/_custom_type_script = "uid://cphfob11f7atx" +[node name="Pro陆蝶" type="AnimatedSprite2D" parent="Ground/DeployLayer/Event陆蝶演出"] +visible = false +position = Vector2(349, 0) +sprite_frames = ExtResource("22_a3f3m") +animation = &"小小小蝶骑在陆仁脖子上擦墙上的涂鸦" +script = ExtResource("18_ryonc") +autostart = false +move_configs = Array[Dictionary]([{ +"animation": "陆仁行走回头", +"animation_next": "陆仁停在家门口", +"duration": 1e+07, +"movement_x": 170.0, +"velocity": Vector2(70, 0) +}]) +debug_mov_animation = "陆仁行走回头" +metadata/_custom_type_script = "uid://cphfob11f7atx" + +[node name="PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/Event陆蝶演出"] +visible = false +position = Vector2(371, 2) +energy = 0.6 +texture = ExtResource("23_a3f3m") + +[node name="鬼打墙两侧纸人" type="Node2D" parent="Ground/DeployLayer" index="16"] +visible = false + +[node name="VisibleStaticBody" type="StaticBody2D" parent="Ground/DeployLayer/鬼打墙两侧纸人"] +position = Vector2(428, 41) +collision_layer = 2 +collision_mask = 0 +script = ExtResource("27_w5p20") +metadata/_custom_type_script = "uid://86rvkbnxd2ti" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Ground/DeployLayer/鬼打墙两侧纸人/VisibleStaticBody"] +shape = SubResource("RectangleShape2D_hrm8u") + +[node name="VisibleStaticBody2" type="StaticBody2D" parent="Ground/DeployLayer/鬼打墙两侧纸人"] +position = Vector2(677, 38) +collision_layer = 2 +collision_mask = 0 +script = ExtResource("27_w5p20") +metadata/_custom_type_script = "uid://86rvkbnxd2ti" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Ground/DeployLayer/鬼打墙两侧纸人/VisibleStaticBody2"] +shape = SubResource("RectangleShape2D_hrm8u") + +[node name="纸人1" type="Sprite2D" parent="Ground/DeployLayer/鬼打墙两侧纸人"] +position = Vector2(428, 52) +texture = ExtResource("28_eu2wc") +flip_h = true + +[node name="纸人2" type="Sprite2D" parent="Ground/DeployLayer/鬼打墙两侧纸人"] +position = Vector2(397, 18) +texture = ExtResource("29_lliag") +flip_h = true + +[node name="纸人3" type="Sprite2D" parent="Ground/DeployLayer/鬼打墙两侧纸人"] +position = Vector2(626, 24) +texture = ExtResource("16_3cwaw") + +[node name="纸人4" type="Sprite2D" parent="Ground/DeployLayer/鬼打墙两侧纸人"] +z_index = 6 +position = Vector2(574, 57) +texture = ExtResource("30_44hgy") +flip_h = true + +[node name="Ambush不想听他们的" parent="Ground/DeployLayer/鬼打墙两侧纸人" instance=ExtResource("20_cl576")] +position = Vector2(657, 44) +enter_affected_by_visibility = true +one_shot = false +cooldown_time = 1.0 +hook_os_key = "c04_鬼打墙_走向楼梯" + [node name="MainPlayer" parent="Ground" index="5"] position = Vector2(34, 98) catty_light_energy = 0.5 @@ -326,4 +447,76 @@ visible = false energy = 0.8 blend_mode = 1 +[node name="鬼打墙Layer" type="Node2D" parent="Ground"] +visible = false +position = Vector2(185, 6) + +[node name="BG" type="Sprite2D" parent="Ground/鬼打墙Layer"] +unique_name_in_owner = true +light_mask = 5 +z_index = -5 +position = Vector2(0, -24) +texture = ExtResource("32_hrm8u") +centered = false +offset = Vector2(0, -100) + +[node name="砖墙1" type="Sprite2D" parent="Ground/鬼打墙Layer"] +position = Vector2(282, -7) +texture = ExtResource("32_44hgy") + +[node name="砖墙2" type="Sprite2D" parent="Ground/鬼打墙Layer"] +position = Vector2(368, -8) +texture = ExtResource("32_44hgy") + +[node name="砖墙3" type="Sprite2D" parent="Ground/鬼打墙Layer"] +position = Vector2(451, -8) +texture = ExtResource("32_44hgy") + +[node name="Ambush门1" parent="Ground/鬼打墙Layer" instance=ExtResource("20_cl576")] +position = Vector2(163, -27) +trigger_mode = "interact" +one_shot = false +hook_method = "ambush_door1" + +[node name="Ambush门2" parent="Ground/鬼打墙Layer" instance=ExtResource("20_cl576")] +position = Vector2(249, -26) +trigger_mode = "interact" +one_shot = false +hook_method = "ambush_door2" + +[node name="Ambush门3" parent="Ground/鬼打墙Layer" instance=ExtResource("20_cl576")] +position = Vector2(330, -26) +trigger_mode = "interact" +one_shot = false +hook_method = "ambush_door3" + +[node name="蜡烛光1" type="PointLight2D" parent="Ground/鬼打墙Layer"] +position = Vector2(122, 36) +color = Color(0.989374, 0.782717, 0.696771, 1) +energy = 0.5 +texture = ExtResource("23_a3f3m") +texture_scale = 0.4 + +[node name="蜡烛光2" type="PointLight2D" parent="Ground/鬼打墙Layer"] +position = Vector2(206, 35) +color = Color(0.989374, 0.782717, 0.696771, 1) +energy = 0.5 +texture = ExtResource("23_a3f3m") +texture_scale = 0.4 + +[node name="蜡烛光3" type="PointLight2D" parent="Ground/鬼打墙Layer"] +position = Vector2(290, 36) +color = Color(0.989374, 0.782717, 0.696771, 1) +energy = 0.5 +texture = ExtResource("23_a3f3m") +texture_scale = 0.4 + +[node name="蜡烛光4" type="PointLight2D" parent="Ground/鬼打墙Layer"] +position = Vector2(373, 35) +color = Color(0.989374, 0.782717, 0.696771, 1) +energy = 0.5 +texture = ExtResource("23_a3f3m") +texture_scale = 0.4 + [editable path="Ground"] +[editable path="Ground/AnimationPlayer/鬼打墙黑手Effect"] diff --git a/scene/ground/script/c04/s08_event陆蝶演出.gd b/scene/ground/script/c04/s08_event陆蝶演出.gd index 4e5927ed..969a56a1 100644 --- a/scene/ground/script/c04/s08_event陆蝶演出.gd +++ b/scene/ground/script/c04/s08_event陆蝶演出.gd @@ -26,9 +26,41 @@ func _on_pre_stage_updated() -> void: func _on_stage_updated() -> void: pass +@onready var animation_player = $"AnimationPlayer" as AnimationPlayer +@onready var light = $"PointLight2D" as PointLight2D +@onready var luren = $"Pro陆蝶" as ProAnimatedSprite2D +@onready var xxxdie = $"小小小蝶" as ProAnimatedSprite2D func _start_show() -> void: SceneManager.lock_player() await SceneManager.pop_os_with_str("c04_鬼打墙_开始os") - - SceneManager.unlock_player() \ No newline at end of file + light.show() + var energy = light.energy + light.energy = 0.0 + luren.show() + luren.modulate.a = 0.0 + var tween = create_tween() + tween.tween_property(luren, "modulate:a", 1.0, 1.0) + tween.parallel().tween_property(light, "energy", energy, 1.0) + await tween.finished + luren.play("小小小蝶骑在陆仁脖子上擦墙上的涂鸦") + # DialogueManager.show_dialogue_balloon(GlobalConfig.DIALOG_C04, "") + # await DialogueManager.dialogue_ended + await Util.wait(3.0) + luren.play("陆仁坐下") + await luren.animation_finished + xxxdie.show() + luren.play("陆仁艰难站起") + await luren.animation_finished + luren.play("陆仁行走回头") + await luren.animation_changed + tween = create_tween() + tween.tween_interval(0.5) + tween.tween_property(luren, "modulate:a", 0.0, 1.5) + tween.parallel().tween_property(xxxdie, "modulate:a", 0.0, 1.0) + await tween.finished + SceneManager.unlock_player() + + +func speak_dialogue(): + SceneManager.pop_debug_dialog_info("对白", "小蝶: 爸爸...")