From 874e4587f6ab7556e5817159b9934bc6dbcb885f Mon Sep 17 00:00:00 2001 From: cakipaul Date: Wed, 17 Sep 2025 22:41:06 +0800 Subject: [PATCH] =?UTF-8?q?=E9=99=A4=E6=99=A6=E6=B8=B8=E6=88=8F=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../art/scene/c04/s00_除晦游戏/ux_除晦手.png | Bin 0 -> 21242 bytes .../c04/s00_除晦游戏/ux_除晦手.png.import | 34 ++ asset/dialogue/inspect_content.csv | 33 ++ asset/dialogue/inspect_content.dialogue | 36 ++ asset/dialogue/item_description.csv | 1 + asset/dialogue/item_description.dialogue | 2 + config/animation/entity_sprite_frames.tres | 146 +++++++- manager/config_manager/global_config.gd | 2 +- scene/character/main_player.gd | 2 +- scene/character/player_animation_config.gd | 29 +- scene/ground/ground_loader.gd | 1 + scene/ground/scene/c04/s01_父母房间.tscn | 15 +- scene/ground/scene/c04/s08_三楼III.gd | 6 + scene/ground/scene/c04/s08_三楼III.tscn | 7 +- scene/ground/scene/c04/s09_除晦游戏.gd | 80 ++++- scene/ground/scene/c04/s09_除晦游戏.tscn | 332 +++++++++++++++++- scene/ground/script/c04/s06_closeup日历.tscn | 5 +- .../script/c04/s09_除晦游戏反色效果.gdshader | 62 ++++ .../c04/s09_除晦游戏反色效果.gdshader.uid | 1 + scene/ground/script/c04/除晦游戏label.gd | 45 +++ scene/ground/script/c04/除晦游戏label.gd.uid | 1 + scene/ground/script/c04/除晦游戏文字root.gd | 75 ++++ .../ground/script/c04/除晦游戏文字root.gd.uid | 1 + scene/ux/prop_hud.tscn | 4 +- 24 files changed, 890 insertions(+), 30 deletions(-) create mode 100644 asset/art/scene/c04/s00_除晦游戏/ux_除晦手.png create mode 100644 asset/art/scene/c04/s00_除晦游戏/ux_除晦手.png.import create mode 100644 scene/ground/script/c04/s09_除晦游戏反色效果.gdshader create mode 100644 scene/ground/script/c04/s09_除晦游戏反色效果.gdshader.uid create mode 100644 scene/ground/script/c04/除晦游戏label.gd create mode 100644 scene/ground/script/c04/除晦游戏label.gd.uid create mode 100644 scene/ground/script/c04/除晦游戏文字root.gd create mode 100644 scene/ground/script/c04/除晦游戏文字root.gd.uid diff --git a/asset/art/scene/c04/s00_除晦游戏/ux_除晦手.png b/asset/art/scene/c04/s00_除晦游戏/ux_除晦手.png new file mode 100644 index 0000000000000000000000000000000000000000..b06ee8768ddc0742ee3dfeddcf817ab36468d0da GIT binary patch literal 21242 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 VPiVOp{L_--sIjF{3GV!j{{#Jw9Z3KH literal 0 HcmV?d00001 diff --git a/asset/art/scene/c04/s00_除晦游戏/ux_除晦手.png.import b/asset/art/scene/c04/s00_除晦游戏/ux_除晦手.png.import new file mode 100644 index 00000000..e59d6450 --- /dev/null +++ b/asset/art/scene/c04/s00_除晦游戏/ux_除晦手.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cgax11gclu80s" +path="res://.godot/imported/ux_除晦手.png-6c68f35f3067c90c07cbb89651b18feb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://asset/art/scene/c04/s00_除晦游戏/ux_除晦手.png" +dest_files=["res://.godot/imported/ux_除晦手.png-6c68f35f3067c90c07cbb89651b18feb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/asset/dialogue/inspect_content.csv b/asset/dialogue/inspect_content.csv index 7d5c1e76..35cbd97a 100644 --- a/asset/dialogue/inspect_content.csv +++ b/asset/dialogue/inspect_content.csv @@ -69,3 +69,36 @@ c03_肉铺账本6,二十日 卖三〇三三 猪肉一斤,,,, c03_肉铺账本7,二十五日 新货到 米肉二十斤 自留 米肉五斤,,,, c03_肉铺账本8,二十六日 赠启钊兄 米肉二斤,,,, c03_肉铺账本9,二十七日 卖三〇一二 米肉一斤,,,, +c04_除晦游戏1,假神医?,,,, +c04_除晦游戏2,一家人都是骗子,,,, +c04_除晦游戏3,外地人,,,, +c04_除晦游戏4,搬来才多久,,,, +c04_除晦游戏5,李家小弟被他们害死了,,,, +c04_除晦游戏6,三楼晚上会有小孩哭,,,, +c04_除晦游戏7,不准去三楼玩,,,, +c04_除晦游戏8,失踪的小女孩是被他们拐走的把,,,, +c04_除晦游戏9,又有人失踪了,,,, +c04_除晦游戏10,搞得我都不敢出门了,,,, +c04_除晦游戏11,他们家养了只黑猫,,,, +c04_除晦游戏12,黑猫不吉利,,,, +c04_除晦游戏13,那家男的能和死人说话,,,, +c04_除晦游戏14,听说夫妻两人早就死了,,,, +c04_除晦游戏15,摊上这种父母真是作孽,,,, +c04_除晦游戏16,轻点声,,,, +c04_除晦游戏17,小心被勾了魂,,,, +c04_除晦游戏18,好久都不出门,,,, +c04_除晦游戏19,肯定心虚了,,,, +c04_除晦游戏20,就那家女儿长得这么胖,,,, +c04_除晦游戏21,他们家还吃人呢,,,, +c04_除晦游戏22,性格一点不像女孩,,,, +c04_除晦游戏23,不知道养了个什么东西出来,,,, +c04_除晦游戏24,真邋遢,,,, +c04_除晦游戏25,他们的女儿其实是儿子吧,,,, +c04_除晦游戏26,趁她尿尿的时候看一下,,,, +c04_除晦游戏27,身上都是怪味道,,,, +c04_除晦游戏28,不知道拜了哪路妖怪,,,, +c04_除晦游戏29,他老婆还是个哑巴,,,, +c04_除晦游戏30,那男人把他老婆的舌头给妖怪吃,,,, +c04_除晦游戏31,亲眼所见啊,,,, +c04_除晦游戏32,早点去死吧,,,, +c04_除晦游戏33,活着祸害人,,,, diff --git a/asset/dialogue/inspect_content.dialogue b/asset/dialogue/inspect_content.dialogue index 60f2d19b..fce25eca 100644 --- a/asset/dialogue/inspect_content.dialogue +++ b/asset/dialogue/inspect_content.dialogue @@ -96,3 +96,39 @@ 二十六日 赠启钊兄 米肉二斤[ID:c03_肉铺账本8] 二十七日 卖三〇一二 米肉一斤[ID:c03_肉铺账本9] => END + +~ c04_除晦游戏 +假神医?[ID:c04_除晦游戏1] +一家人都是骗子[ID:c04_除晦游戏2] +外地人[ID:c04_除晦游戏3] +搬来才多久[ID:c04_除晦游戏4] +李家小弟被他们害死了[ID:c04_除晦游戏5] +三楼晚上会有小孩哭[ID:c04_除晦游戏6] +不准去三楼玩[ID:c04_除晦游戏7] +失踪的小女孩是被他们拐走的把[ID:c04_除晦游戏8] +又有人失踪了[ID:c04_除晦游戏9] +搞得我都不敢出门了[ID:c04_除晦游戏10] +他们家养了只黑猫[ID:c04_除晦游戏11] +黑猫不吉利[ID:c04_除晦游戏12] +那家男的能和死人说话[ID:c04_除晦游戏13] +听说夫妻两人早就死了[ID:c04_除晦游戏14] +摊上这种父母真是作孽[ID:c04_除晦游戏15] +轻点声[ID:c04_除晦游戏16] +小心被勾了魂[ID:c04_除晦游戏17] +好久都不出门[ID:c04_除晦游戏18] +肯定心虚了[ID:c04_除晦游戏19] +就那家女儿长得这么胖[ID:c04_除晦游戏20] +他们家还吃人呢[ID:c04_除晦游戏21] +性格一点不像女孩[ID:c04_除晦游戏22] +不知道养了个什么东西出来[ID:c04_除晦游戏23] +真邋遢[ID:c04_除晦游戏24] +他们的女儿其实是儿子吧[ID:c04_除晦游戏25] +趁她尿尿的时候看一下[ID:c04_除晦游戏26] +身上都是怪味道[ID:c04_除晦游戏27] +不知道拜了哪路妖怪[ID:c04_除晦游戏28] +他老婆还是个哑巴[ID:c04_除晦游戏29] +那男人把他老婆的舌头给妖怪吃[ID:c04_除晦游戏30] +亲眼所见啊[ID:c04_除晦游戏31] +早点去死吧[ID:c04_除晦游戏32] +活着祸害人[ID:c04_除晦游戏33] +=> END diff --git a/asset/dialogue/item_description.csv b/asset/dialogue/item_description.csv index 441a1261..3d5075bd 100644 --- a/asset/dialogue/item_description.csv +++ b/asset/dialogue/item_description.csv @@ -381,3 +381,4 @@ c04_鬼打墙_走向楼梯,不,我不想听它们的。,,,,, c04_鬼打墙_再次开门,不会是...鬼打墙吧?,,,,, c04_鬼打墙_全部交互完,...,,,,, c04_鬼打墙_捂眼,我记得...{br}捂眼静心,或许有用。,,,,, +c04_除晦游戏_开始,好吵...不要吵了,,,,, diff --git a/asset/dialogue/item_description.dialogue b/asset/dialogue/item_description.dialogue index 9a1ca644..76f098eb 100644 --- a/asset/dialogue/item_description.dialogue +++ b/asset/dialogue/item_description.dialogue @@ -479,6 +479,8 @@ skip[ID:prop_沾血的老虎钳_详情] 不会是...鬼打墙吧?[ID:c04_鬼打墙_再次开门] ...[ID:c04_鬼打墙_全部交互完] 我记得...{br}捂眼静心,或许有用。[ID:c04_鬼打墙_捂眼] +# 除晦游戏 +好吵...不要吵了[ID:c04_除晦游戏_开始] => END ~ Notes_c05 diff --git a/config/animation/entity_sprite_frames.tres b/config/animation/entity_sprite_frames.tres index f7a217c8..e68a7fa6 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=1071 format=3 uid="uid://b7fhheih1hbvf"] +[gd_resource type="SpriteFrames" load_steps=1102 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,24 +1052,55 @@ [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://75q52y1am8w7" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼/0.png" id="1053_ims8x"] [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://dssx0cv6lcn4h" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼/1.png" id="1054_8syho"] [ext_resource type="Texture2D" uid="uid://b7vdib1l4fvmv" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/2.png" id="1055_37ts7"] +[ext_resource type="Texture2D" uid="uid://dqy83v7otqi8q" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼/2.png" id="1055_xpdus"] [ext_resource type="Texture2D" uid="uid://6p3a2xxh4vle" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/3.png" id="1056_q7q0i"] +[ext_resource type="Texture2D" uid="uid://dskammmgt6p1k" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼/3.png" id="1056_ubuty"] [ext_resource type="Texture2D" uid="uid://dxcm3462m4my6" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/4.png" id="1057_la5wd"] +[ext_resource type="Texture2D" uid="uid://1jg11gdxqbyg" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼/4.png" id="1057_lpy23"] +[ext_resource type="Texture2D" uid="uid://b4htb08ofcct2" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼呼吸/0.png" id="1058_35cy1"] [ext_resource type="Texture2D" uid="uid://b28j1kgnc0xro" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/5.png" id="1058_voge0"] +[ext_resource type="Texture2D" uid="uid://b4ef4dgnql7ru" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼呼吸/1.png" id="1059_313ip"] [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://bvbt0gywcl4ti" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼呼吸/2.png" id="1060_as7o6"] [ext_resource type="Texture2D" uid="uid://gy1ugcpngt1p" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/8.png" id="1061_0ye5j"] +[ext_resource type="Texture2D" uid="uid://ttuewk1ghnmq" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼呼吸/3.png" id="1061_ycyb5"] +[ext_resource type="Texture2D" uid="uid://bamy0yy0eo42j" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼呼吸/4.png" id="1062_8dtli"] [ext_resource type="Texture2D" uid="uid://4t48tqnox4vr" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/9.png" id="1062_xfi5l"] +[ext_resource type="Texture2D" uid="uid://c3ha1p6fu6qkm" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼呼吸/5.png" id="1063_p46hf"] [ext_resource type="Texture2D" uid="uid://d2j6ubjov164f" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/10.png" id="1063_r3y8n"] +[ext_resource type="Texture2D" uid="uid://b81w5sfycq8l1" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼放下/0.png" id="1064_1eof2"] [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://cxjr2a0623tak" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼放下/1.png" id="1065_eehli"] +[ext_resource type="Texture2D" uid="uid://cprtrlpaatvcs" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼放下/2.png" id="1066_fdp6i"] [ext_resource type="Texture2D" uid="uid://c7ryymjhjk2gv" path="res://asset/art/gif/c04_木头人游戏/木头人_吕萍_死亡动作/13.png" id="1066_t25a7"] +[ext_resource type="Texture2D" uid="uid://bedaaviwo4rxv" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼放下/3.png" id="1067_j8iso"] [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://du5iwu6kklql4" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/0.png" id="1068_exh41"] +[ext_resource type="Texture2D" uid="uid://cv5s41fdlm0jd" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/1.png" id="1069_38qsh"] [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"] +[ext_resource type="Texture2D" uid="uid://ctbxwos4m7201" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/2.png" id="1070_nohsw"] +[ext_resource type="Texture2D" uid="uid://b1udcj3h4nxst" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/3.png" id="1071_bbjp7"] +[ext_resource type="Texture2D" uid="uid://ccaa7nl4q5srm" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/4.png" id="1072_6krcv"] +[ext_resource type="Texture2D" uid="uid://qfa7708xb25y" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/5.png" id="1073_rdn4r"] +[ext_resource type="Texture2D" uid="uid://5inug2lf4dgn" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/6.png" id="1074_s307o"] +[ext_resource type="Texture2D" uid="uid://qbowwc5r7tpn" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/7.png" id="1075_a43i5"] +[ext_resource type="Texture2D" uid="uid://dcu7se5xi876v" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/8.png" id="1076_t0x06"] +[ext_resource type="Texture2D" uid="uid://betjp865ic4f2" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/9.png" id="1077_li64a"] +[ext_resource type="Texture2D" uid="uid://btvofoysylc4p" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/10.png" id="1078_87fjk"] +[ext_resource type="Texture2D" uid="uid://tsc8u8kvlset" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/11.png" id="1079_ivc6x"] +[ext_resource type="Texture2D" uid="uid://cduktq0r8noq7" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/12.png" id="1080_wnl82"] +[ext_resource type="Texture2D" uid="uid://dw33aqiha46v0" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/13.png" id="1081_tnls8"] +[ext_resource type="Texture2D" uid="uid://wbnp0dmrndnx" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/14.png" id="1082_oi5yg"] +[ext_resource type="Texture2D" uid="uid://cfu2v88etq5dj" path="res://asset/art/gif/c04_鬼打墙/吕萍-捂眼走/15.png" id="1083_ev0x7"] [resource] animations = [{ @@ -4959,6 +4990,119 @@ animations = [{ "speed": 5.0 }, { "frames": [{ +"duration": 1.0, +"texture": ExtResource("1053_ims8x") +}, { +"duration": 1.0, +"texture": ExtResource("1054_8syho") +}, { +"duration": 1.0, +"texture": ExtResource("1055_xpdus") +}, { +"duration": 1.0, +"texture": ExtResource("1056_ubuty") +}, { +"duration": 1.0, +"texture": ExtResource("1057_lpy23") +}], +"loop": false, +"name": &"c04_吕萍_捂眼", +"speed": 6.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": ExtResource("1058_35cy1") +}, { +"duration": 1.0, +"texture": ExtResource("1059_313ip") +}, { +"duration": 1.0, +"texture": ExtResource("1060_as7o6") +}, { +"duration": 1.0, +"texture": ExtResource("1061_ycyb5") +}, { +"duration": 1.0, +"texture": ExtResource("1062_8dtli") +}, { +"duration": 1.0, +"texture": ExtResource("1063_p46hf") +}], +"loop": false, +"name": &"c04_吕萍_捂眼呼吸", +"speed": 1.5 +}, { +"frames": [{ +"duration": 1.0, +"texture": ExtResource("1064_1eof2") +}, { +"duration": 1.0, +"texture": ExtResource("1065_eehli") +}, { +"duration": 1.0, +"texture": ExtResource("1066_fdp6i") +}, { +"duration": 1.0, +"texture": ExtResource("1067_j8iso") +}], +"loop": false, +"name": &"c04_吕萍_捂眼放下", +"speed": 6.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": ExtResource("1068_exh41") +}, { +"duration": 1.0, +"texture": ExtResource("1069_38qsh") +}, { +"duration": 1.0, +"texture": ExtResource("1070_nohsw") +}, { +"duration": 1.0, +"texture": ExtResource("1071_bbjp7") +}, { +"duration": 1.0, +"texture": ExtResource("1072_6krcv") +}, { +"duration": 1.0, +"texture": ExtResource("1073_rdn4r") +}, { +"duration": 1.0, +"texture": ExtResource("1074_s307o") +}, { +"duration": 1.0, +"texture": ExtResource("1075_a43i5") +}, { +"duration": 1.0, +"texture": ExtResource("1076_t0x06") +}, { +"duration": 1.0, +"texture": ExtResource("1077_li64a") +}, { +"duration": 1.0, +"texture": ExtResource("1078_87fjk") +}, { +"duration": 1.0, +"texture": ExtResource("1079_ivc6x") +}, { +"duration": 1.0, +"texture": ExtResource("1080_wnl82") +}, { +"duration": 1.0, +"texture": ExtResource("1081_tnls8") +}, { +"duration": 1.0, +"texture": ExtResource("1082_oi5yg") +}, { +"duration": 1.0, +"texture": ExtResource("1083_ev0x7") +}], +"loop": true, +"name": &"c04_吕萍_捂眼走", +"speed": 6.0 +}, { +"frames": [{ "duration": 2.0, "texture": ExtResource("1053_mhvgv") }, { diff --git a/manager/config_manager/global_config.gd b/manager/config_manager/global_config.gd index 0cc46509..fc50a372 100644 --- a/manager/config_manager/global_config.gd +++ b/manager/config_manager/global_config.gd @@ -7,7 +7,7 @@ const DEBUG_CHARACTER_PREFIX = "[debug]" # 影响事件的 release_stage # 0:demo # 1:v1.0正式版 -const RELEASE_STAGE := 0 +const RELEASE_STAGE := 1 static func is_demo() -> bool: return RELEASE_STAGE == 0 diff --git a/scene/character/main_player.gd b/scene/character/main_player.gd index 6394deed..e27673fd 100644 --- a/scene/character/main_player.gd +++ b/scene/character/main_player.gd @@ -23,7 +23,7 @@ signal animation_finished @export var lock_move_right := false @export var reenter_lock: PlayerReenterLock @export var camera_marker: CameraFocusMarker -@export_enum("吕萍", "吕萍爬行", "吕萍带小猫", "吕萍推柜子", "吕萍拉大柜子", "小小蝶", "盒子猫", "胖子游戏", "小小小蝶") var character := "吕萍": +@export_enum("吕萍", "吕萍爬行", "吕萍带小猫", "吕萍推柜子", "吕萍拉大柜子", "小小蝶", "盒子猫", "胖子游戏", "吕萍捂脸", "小小小蝶") var character := "吕萍": set(val): character = val if is_node_ready(): diff --git a/scene/character/player_animation_config.gd b/scene/character/player_animation_config.gd index a3fadf62..d4e7a0bf 100644 --- a/scene/character/player_animation_config.gd +++ b/scene/character/player_animation_config.gd @@ -56,7 +56,12 @@ 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)], + 24: [&"", Vector2.ONE, Vector2(0, -50.0), &"", &"c04_吕萍_捂眼"], + 25: [&"", Vector2.ONE, Vector2(0, -50.0), &"", &"c04_吕萍_捂眼呼吸"], + 26: [&"", Vector2.ONE, Vector2(0, -50.0), &"", &"c04_吕萍_捂眼放下"], + 27: [&"", Vector2.ONE, Vector2(0, -50.0), &"", &"c04_吕萍_捂眼走"], }, "吕萍爬行": { @@ -207,12 +212,34 @@ var ANIMATION_CONFIG = { # 此处为[2][3]分别为 sprite 向左、向右时的 offset MOVEMENT_WALKING: [&"", &"c03_胖子游戏_瘦子走"], MOVEMENT_RUNNING: [&"", &"c03_胖子游戏_瘦子跑"], - 5: [&"c03_胖子游戏_掉下来", Vector2.ONE, Vector2(0, -108.0)], + 5: [&"c03_胖子游戏_掉下来", Vector2.ONE, Vector2(0, -108.0)], 6: [&"c03_胖子游戏_洞里爬出来", Vector2.ONE, Vector2(-70, -44.5)], 7: [&"", Vector2.ONE, Vector2(0, -51.0), &"", &"c03_胖子游戏_胖子对半砍"], 8: [&"", Vector2.ONE, Vector2(0, -51.0), &"", &"c03_胖子游戏_吃东西"], 9: [&"", Vector2.ONE, Vector2(0, -108.0), &"", &"c03_胖子游戏_爬起来"], }, + "吕萍捂脸": + { + "scale": Vector2.ONE, + "speed_walking": 60.0, + "can_run": false, + "speed_runnig": 110.0, + "walk_footstep": 0.5, + "run_footstep": 7.0 / 10.0 / 2.0, + # 内心 os 时,dialogue 的高度 + "os_height": 120.0, + "light_height": 60.0, + # 人物脚底 offset,吕萍为 0,高 200px,足底在 100px 处 + "foot_offset": Vector2(0, -50), + MOVEMENT_IDLE: [&"", &"c04_吕萍_捂眼呼吸"], + MOVEMENT_WALKING: [&"", &"c04_吕萍_捂眼走"], + MOVEMENT_RUNNING: [&"", &"c04_吕萍_捂眼走"], + # 第三章 + 24: [&"", Vector2.ONE, Vector2(0, -50.0), &"", &"c04_吕萍_捂眼"], + 25: [&"", Vector2.ONE, Vector2(0, -50.0), &"", &"c04_吕萍_捂眼呼吸"], + 26: [&"", Vector2.ONE, Vector2(0, -50.0), &"", &"c04_吕萍_捂眼放下"], + 27: [&"", Vector2.ONE, Vector2(0, -50.0), &"", &"c04_吕萍_捂眼走"], + }, "小小小蝶": { "scale": Vector2(1, 1), diff --git a/scene/ground/ground_loader.gd b/scene/ground/ground_loader.gd index ab102308..20371c5e 100644 --- a/scene/ground/ground_loader.gd +++ b/scene/ground/ground_loader.gd @@ -55,6 +55,7 @@ const GROUND_SCENE_PATH_DICT: Dictionary[String, Dictionary] = { "c04_s06": {"path": "uid://dgcxqcu5k6tvt", "name": "小蝶房间"}, "c04_s07": {"path": "uid://b6cfu5rs88pql", "name": "佛堂"}, "c04_s08": {"path": "uid://dcg8ekvhqxjjs", "name": "三楼III"}, + "c04_s09": {"path": "uid://cchuw5rw6cf0l", "name": "除晦游戏"}, } # 注意: 共享 ground archive diff --git a/scene/ground/scene/c04/s01_父母房间.tscn b/scene/ground/scene/c04/s01_父母房间.tscn index 2fc89104..29658288 100644 --- a/scene/ground/scene/c04/s01_父母房间.tscn +++ b/scene/ground/scene/c04/s01_父母房间.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=13 format=3 uid="uid://drjnu33pga6i5"] +[gd_scene load_steps=14 format=3 uid="uid://drjnu33pga6i5"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_36j8f"] [ext_resource type="Script" uid="uid://bkbngux0ije3l" path="res://scene/ground/scene/c04/s01_父母房间.gd" id="2_1k73c"] @@ -7,6 +7,7 @@ [ext_resource type="Texture2D" uid="uid://byxt5camx1sbh" path="res://asset/art/scene/c04/s01_父母房间/小蝶父母房间.png" id="5_7m886"] [ext_resource type="PackedScene" uid="uid://dqkxiqbq83cmq" path="res://scene/entity/closeup.tscn" id="5_173ya"] [ext_resource type="PackedScene" uid="uid://8chvwh72yan1" path="res://scene/ground/script/c03/s09_closeup九宫格游戏.tscn" id="6_1k73c"] +[ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="6_c3ujy"] [ext_resource type="Texture2D" uid="uid://72r8mpv4dym1" path="res://asset/art/scene/c04/s01_父母房间/藤曼.png" id="6_rfsfd"] [ext_resource type="Script" uid="uid://0wjaho6qkg6s" path="res://manager/event_manager/event_binder.gd" id="7_rfsfd"] [ext_resource type="Texture2D" uid="uid://c22pwj4e7hxo5" path="res://asset/art/scene/c04/s01_父母房间/前景.png" id="9_lkeaf"] @@ -55,7 +56,13 @@ target_scene = "c04_s06" target_portal = "left" status = "opened" -[node name="藤蔓" type="Sprite2D" parent="Ground/DeployLayer" index="2"] +[node name="portal_1" parent="Ground/DeployLayer" index="2" instance=ExtResource("6_c3ujy")] +position = Vector2(258, 37) +debug_note = "除晦游戏结束后传送点" +enabled = false +portal_name = "1" + +[node name="藤蔓" type="Sprite2D" parent="Ground/DeployLayer" index="3"] position = Vector2(319, -27) texture = ExtResource("6_rfsfd") @@ -67,11 +74,11 @@ updater_ease_duration = 0.0 updater_stages = Array[int]([0, 1]) metadata/_custom_type_script = "uid://0wjaho6qkg6s" -[node name="Closeup九宫格游戏" parent="Ground/DeployLayer" index="3" instance=ExtResource("5_173ya")] +[node name="Closeup九宫格游戏" parent="Ground/DeployLayer" index="4" instance=ExtResource("5_173ya")] position = Vector2(178, 30) packed_scene = ExtResource("6_1k73c") -[node name="Closeup桌面" parent="Ground/DeployLayer" index="4" instance=ExtResource("5_173ya")] +[node name="Closeup桌面" parent="Ground/DeployLayer" index="5" instance=ExtResource("5_173ya")] position = Vector2(306, 34) packed_scene = ExtResource("10_lkeaf") diff --git a/scene/ground/scene/c04/s08_三楼III.gd b/scene/ground/scene/c04/s08_三楼III.gd index 5cdef8ae..d0199c72 100644 --- a/scene/ground/scene/c04/s08_三楼III.gd +++ b/scene/ground/scene/c04/s08_三楼III.gd @@ -130,6 +130,7 @@ func _game_success() -> void: await Util.wait(1.0) var animation_player = $"鬼打墙黑手Effect/AnimationPlayer" animation_player.play("双手捂屏幕") + _action_hide_face() # 重置镜头与玩家活动范围 SceneManager.get_player().player_movement_rect = player_rect var camera = SceneManager.get_camera_marker() @@ -143,6 +144,7 @@ func _game_success() -> void: _hide_trap_layer() await Util.wait(1.5) animation_player.play("双手离开屏幕") + SceneManager.get_player().player_action(26, false) camera.speed = 2.0 tween = create_tween() tween.tween_property(camera, "limit_right", camera_rect.size.x, 2.0) @@ -150,6 +152,10 @@ func _game_success() -> void: await Util.wait(1.0) SceneManager.unlock_player() +func _action_hide_face() -> void: + await SceneManager.get_player().player_action(24, false) + SceneManager.get_player().player_action(25, false) + func _hide_trap_layer() -> void: var l = $"../鬼打墙Layer" diff --git a/scene/ground/scene/c04/s08_三楼III.tscn b/scene/ground/scene/c04/s08_三楼III.tscn index 7d838d23..e18f1cc7 100644 --- a/scene/ground/scene/c04/s08_三楼III.tscn +++ b/scene/ground/scene/c04/s08_三楼III.tscn @@ -288,7 +288,7 @@ updater_stages = Array[int]([0]) metadata/_custom_type_script = "uid://0wjaho6qkg6s" [node name="排队纸人" type="Sprite2D" parent="Ground/DeployLayer" index="11"] -position = Vector2(413.6, 10.4) +position = Vector2(464.6, 9.4) scale = Vector2(0.8, 0.8) texture = ExtResource("21_llqg1") @@ -301,7 +301,7 @@ updater_stages = Array[int]([3]) metadata/_custom_type_script = "uid://0wjaho6qkg6s" [node name="排队纸人_歪头" type="Sprite2D" parent="Ground/DeployLayer" index="12"] -position = Vector2(413.6, 10.4) +position = Vector2(464.6, 9.4) scale = Vector2(0.8, 0.8) texture = ExtResource("22_qnwug") @@ -484,14 +484,17 @@ centered = false offset = Vector2(0, -100) [node name="砖墙1" type="Sprite2D" parent="Ground/鬼打墙Layer"] +visible = false position = Vector2(282, -7) texture = ExtResource("32_44hgy") [node name="砖墙2" type="Sprite2D" parent="Ground/鬼打墙Layer"] +visible = false position = Vector2(368, -8) texture = ExtResource("32_44hgy") [node name="砖墙3" type="Sprite2D" parent="Ground/鬼打墙Layer"] +visible = false position = Vector2(451, -8) texture = ExtResource("32_44hgy") diff --git a/scene/ground/scene/c04/s09_除晦游戏.gd b/scene/ground/scene/c04/s09_除晦游戏.gd index 4b2f923c..cfe93b49 100644 --- a/scene/ground/scene/c04/s09_除晦游戏.gd +++ b/scene/ground/scene/c04/s09_除晦游戏.gd @@ -14,6 +14,7 @@ func _ready() -> void: #region node_reference +var inversed_color_sprite: Sprite2D #endregion @@ -24,6 +25,83 @@ func _setup_node_reference() -> void: var texture_painting_after_tear = preload("uid://deoi4dv42vspn") +var bg_texture_width: float +var player: MainPlayer + func _on_ground_ready() -> void: - pass + bg_texture_width = $"../BGSprite2D".texture.get_size().x + inversed_color_sprite = $"../DeployLayer/反色空间" + player = SceneManager.get_player() + # 锁定玩家位置 + player.global_position.x = $"../DeployLayer/portal_1".global_position.x + player.set_facing_direction(Vector2.RIGHT) + # 锁定玩家 + SceneManager.lock_player() + Util.timer(2.0, _game_intro) + + +func _game_intro() -> void: + # 手捂脸 + _action_hide_face() + _toggle_inversed_effect(true) + await Util.wait(2.0) + # 开始游戏 + var root1 = $"../DeployLayer/文字Root1" + root1.start_disperse_game() + root1.game_success.connect(_stage_1_success, CONNECT_ONE_SHOT) + await Util.wait(2.0) + # 显示提示文字 + var label = $"../DeployLayer/屏中文字/提示文字" + $"Sfx红字音效".play() + var tween = create_tween() + tween.tween_property(label, "modulate:a", 1.0, 1.0) + tween.tween_interval(3.0) + tween.tween_property(label, "modulate:a", 0.0, 1.0) + + +func _action_hide_face() -> void: + SceneManager.get_player().character = "吕萍捂脸" + SceneManager.get_player().player_action(24, true) + + +# 更新反色空间位置 +func _physics_process(_delta: float) -> void: + if not player or Engine.is_editor_hint(): + return + var ratio = player.global_position.x / bg_texture_width + inversed_color_sprite.material.set("shader_parameter/offset_ratio", ratio) + + +func _toggle_inversed_effect(show: bool, duration := 2.0) -> void: + if show: + create_tween().tween_property( + inversed_color_sprite.material, "shader_parameter/modulate_a", 1.0, duration + ) + else: + create_tween().tween_property( + inversed_color_sprite.material, "shader_parameter/modulate_a", 0.0, duration + ) + + +func _stage_1_success() -> void: + await Util.wait(1.0) + # 向右走 + var target_x = $"../DeployLayer/portal_2".global_position.x + await SceneManager.get_player().walk_to_x(target_x).finished + await Util.wait(1.0) + _action_hide_face() + # 开始第二阶段游戏 + var root2 = $"../DeployLayer/文字Root2" + root2.start_disperse_game() + root2.game_success.connect(_stage_2_success, CONNECT_ONE_SHOT) + + +func _stage_2_success() -> void: + # 手放下 + SceneManager.get_player().character = "吕萍" + SceneManager.get_player().player_action(26, true) + _toggle_inversed_effect(false) + await Util.wait(2.0) + # 传送到父母房间 + SceneManager.get_ground_loader().transition_to_scene("c04_s01", "1") diff --git a/scene/ground/scene/c04/s09_除晦游戏.tscn b/scene/ground/scene/c04/s09_除晦游戏.tscn index 3a670837..883267de 100644 --- a/scene/ground/scene/c04/s09_除晦游戏.tscn +++ b/scene/ground/scene/c04/s09_除晦游戏.tscn @@ -1,25 +1,42 @@ -[gd_scene load_steps=14 format=3 uid="uid://cchuw5rw6cf0l"] +[gd_scene load_steps=23 format=3 uid="uid://cchuw5rw6cf0l"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_juj5v"] [ext_resource type="Script" uid="uid://b06m3d5mehyin" path="res://scene/ground/scene/c04/s09_除晦游戏.gd" id="2_juj5v"] [ext_resource type="AudioStream" uid="uid://b2mudqvq1dmng" path="res://asset/audio/sfx/环境音/白噪音/白噪声房间里1.ogg" id="3_om2jl"] [ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_n4q25"] +[ext_resource type="AudioStream" uid="uid://ko5kibky8hcw" path="res://asset/audio/sfx/交互/第一章/红字特效音.ogg" id="5_3a5uu"] [ext_resource type="Texture2D" uid="uid://dsymfb45n1sx1" path="res://asset/art/scene/c04/s00_除晦游戏/客厅连着父母房间.png" id="5_iqexw"] +[ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="6_7knml"] [ext_resource type="Texture2D" uid="uid://bhygivahwd1yb" path="res://asset/art/scene/c04/s05_客厅/藤曼.png" id="6_qppbt"] [ext_resource type="Script" uid="uid://0wjaho6qkg6s" path="res://manager/event_manager/event_binder.gd" id="7_3a5uu"] [ext_resource type="Texture2D" uid="uid://cgjca5flabtkt" path="res://asset/art/scene/c04/s00_除晦游戏/客厅连着父母房间_关着的门.png" id="8_cmpvw"] [ext_resource type="Texture2D" uid="uid://0l2c7c3qgxs0" path="res://asset/art/scene/c04/s00_除晦游戏/客厅连着父母房间_上层墙.png" id="8_ob3l3"] +[ext_resource type="Script" uid="uid://dpocj5al0rvai" path="res://ui/text_helper.gd" id="8_qppbt"] [ext_resource type="Texture2D" uid="uid://86yqa60yum4f" path="res://asset/art/scene/c04/s00_除晦游戏/客厅连着父母房间_打开的门.png" id="9_prdnl"] +[ext_resource type="Texture2D" uid="uid://cgax11gclu80s" path="res://asset/art/scene/c04/s00_除晦游戏/ux_除晦手.png" id="11_7jpfo"] [ext_resource type="Texture2D" uid="uid://xnqlxofyldx5" path="res://asset/art/scene/c04/s00_除晦游戏/客厅连着父母房间_反色.png" id="11_prdnl"] +[ext_resource type="Shader" uid="uid://c4ioalmumivey" path="res://scene/ground/script/c04/s09_除晦游戏反色效果.gdshader" id="12_juj5v"] [ext_resource type="Texture2D" uid="uid://cpgt884ml6a7d" path="res://asset/art/scene/c04/s05_客厅/前景.png" id="14_0i4ir"] +[ext_resource type="Script" uid="uid://bvkqk6qf83nux" path="res://scene/ground/script/c04/除晦游戏label.gd" id="14_ef5eh"] +[ext_resource type="Script" uid="uid://bm1luy5kk6sbv" path="res://scene/ground/script/c04/除晦游戏文字root.gd" id="14_n4q25"] +[ext_resource type="FontFile" uid="uid://bnxdsxp7dst7f" path="res://asset/font/锐字太空混元像素简繁-闪 超黑_mianfeiziti.com.ttf" id="14_om2jl"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_ef5eh"] +shader = ExtResource("12_juj5v") +shader_parameter/mask_texture = ExtResource("11_7jpfo") +shader_parameter/modulate_a = 0.0 +shader_parameter/half_width_ratio = 0.218 +shader_parameter/offset_ratio = 0.063 +shader_parameter/alpha_threshold = 0.5 + [node name="S09" type="Node2D"] metadata/_edit_horizontal_guides_ = [-627.0] [node name="Ground" parent="." instance=ExtResource("1_juj5v")] scene_name = "c04_s09" +default_portal = "1" player_y = 60 [node name="AnimationPlayer" parent="Ground" index="0"] @@ -39,24 +56,39 @@ mode = "场景背景音" "感应玩家操作" = false metadata/_custom_type_script = "uid://rq6w1vuhuq1m" +[node name="Sfx红字音效" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"] +stream = ExtResource("5_3a5uu") +volume_db = -10.0 +bus = &"game_sfx" +script = ExtResource("4_n4q25") +metadata/_custom_type_script = "uid://rq6w1vuhuq1m" + [node name="BGSprite2D" parent="Ground" index="2"] light_mask = 5 texture = ExtResource("5_iqexw") offset = Vector2(0, -158) [node name="portal_left" parent="Ground/DeployLayer" index="0"] -position = Vector2(70, 29) -target_scene = "c04_s08" -target_portal = "1" -status = "opened" +position = Vector2(72, 24) +enabled = false [node name="portal_right" parent="Ground/DeployLayer" index="1"] -position = Vector2(538, 31) -target_scene = "c04_s01" -target_portal = "left" -status = "opened" +position = Vector2(1185, 25) +enabled = false -[node name="藤蔓" type="Sprite2D" parent="Ground/DeployLayer" index="2"] +[node name="portal_1" parent="Ground/DeployLayer" index="2" instance=ExtResource("6_7knml")] +position = Vector2(289, 25) +debug_note = "传送点" +enabled = false +portal_name = "1" + +[node name="portal_2" parent="Ground/DeployLayer" index="3" instance=ExtResource("6_7knml")] +position = Vector2(852, 39) +debug_note = "右侧点" +enabled = false +portal_name = "2" + +[node name="藤蔓" type="Sprite2D" parent="Ground/DeployLayer" index="4"] position = Vector2(294, -17) texture = ExtResource("6_qppbt") @@ -68,28 +100,297 @@ updater_ease_duration = 0.0 updater_stages = Array[int]([0, 1]) metadata/_custom_type_script = "uid://0wjaho6qkg6s" -[node name="关着的门" type="Sprite2D" parent="Ground/DeployLayer" index="3"] +[node name="关着的门" type="Sprite2D" parent="Ground/DeployLayer" index="5"] texture = ExtResource("8_cmpvw") centered = false offset = Vector2(0, -158) -[node name="打开的门" type="Sprite2D" parent="Ground/DeployLayer" index="4"] +[node name="打开的门" type="Sprite2D" parent="Ground/DeployLayer" index="6"] visible = false texture = ExtResource("9_prdnl") centered = false offset = Vector2(0, -158) -[node name="隔断墙" type="Sprite2D" parent="Ground/DeployLayer" index="5"] +[node name="隔断墙" type="Sprite2D" parent="Ground/DeployLayer" index="7"] z_index = 6 position = Vector2(607.5, 0) texture = ExtResource("8_ob3l3") -[node name="反色空间" type="Sprite2D" parent="Ground/DeployLayer" index="6"] +[node name="反色空间" type="Sprite2D" parent="Ground/DeployLayer" index="8"] z_index = 6 +material = SubResource("ShaderMaterial_ef5eh") texture = ExtResource("11_prdnl") centered = false offset = Vector2(0, -158) +[node name="屏中文字" type="Node2D" parent="Ground/DeployLayer" index="9"] +z_index = 6 +position = Vector2(282, -20) + +[node name="提示文字" type="RichTextLabel" parent="Ground/DeployLayer/屏中文字"] +modulate = Color(1, 1, 1, 0) +light_mask = 16 +custom_minimum_size = Vector2(300, 0) +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -50.0 +offset_right = 50.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 32 +bbcode_enabled = true +text = "[wave amp=10.0 freq=3.0][/wave]" +fit_content = true +horizontal_alignment = 1 +meta_underlined = false +hint_underlined = false +script = ExtResource("8_qppbt") +translation_key = "c04_除晦游戏_开始" +prefix = "[wave amp=10.0 freq=3.0]" +suffix = "[/wave]" + +[node name="文字Root1" type="Node2D" parent="Ground/DeployLayer" index="10"] +z_index = 6 +script = ExtResource("14_n4q25") + +[node name="2" type="RichTextLabel" parent="Ground/DeployLayer/文字Root1"] +self_modulate = Color(0.745098, 0.745098, 0.745098, 1) +light_mask = 16 +custom_minimum_size = Vector2(150, 0) +offset_left = 387.0 +offset_top = -3.0 +offset_right = 537.0 +offset_bottom = 29.0 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +text = "[url=2][wave amp=8.0 freq=2.0]一家人都是骗子[/wave][/url]" +fit_content = true +meta_underlined = false +hint_underlined = false +script = ExtResource("14_ef5eh") +id = "2" + +[node name="1" type="RichTextLabel" parent="Ground/DeployLayer/文字Root1"] +light_mask = 16 +custom_minimum_size = Vector2(150, 0) +offset_left = 392.0 +offset_top = -41.0 +offset_right = 542.0 +offset_bottom = -25.0 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +text = "[url=1][wave amp=8.0 freq=2.0]假神医?[/wave][/url]" +fit_content = true +meta_underlined = false +hint_underlined = false +script = ExtResource("14_ef5eh") +id = "1" + +[node name="3" type="RichTextLabel" parent="Ground/DeployLayer/文字Root1"] +self_modulate = Color(0.745098, 0.745098, 0.745098, 1) +light_mask = 16 +custom_minimum_size = Vector2(150, 0) +offset_left = 74.0 +offset_top = -52.0 +offset_right = 174.0 +offset_bottom = -20.0 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +text = "[url=2][wave amp=8.0 freq=2.0]一家人都是骗子[/wave][/url]" +fit_content = true +meta_underlined = false +hint_underlined = false +script = ExtResource("14_ef5eh") +id = "2" + +[node name="4" type="RichTextLabel" parent="Ground/DeployLayer/文字Root1"] +self_modulate = Color(0.745098, 0.745098, 0.745098, 1) +light_mask = 16 +custom_minimum_size = Vector2(150, 0) +offset_left = 84.0 +offset_top = -2.0 +offset_right = 184.0 +offset_bottom = 30.0 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +text = "[url=2][wave amp=8.0 freq=2.0]一家人都是骗子[/wave][/url]" +fit_content = true +meta_underlined = false +hint_underlined = false +script = ExtResource("14_ef5eh") +id = "2" + +[node name="6" type="RichTextLabel" parent="Ground/DeployLayer/文字Root1"] +self_modulate = Color(0.745098, 0.745098, 0.745098, 1) +light_mask = 16 +custom_minimum_size = Vector2(150, 0) +offset_left = 398.0 +offset_top = 56.0 +offset_right = 548.0 +offset_bottom = 88.0 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +text = "[url=2][wave amp=8.0 freq=2.0]一家人都是骗子[/wave][/url]" +fit_content = true +meta_underlined = false +hint_underlined = false +script = ExtResource("14_ef5eh") +id = "2" + +[node name="5" type="RichTextLabel" parent="Ground/DeployLayer/文字Root1"] +self_modulate = Color(0.745098, 0.745098, 0.745098, 1) +light_mask = 16 +custom_minimum_size = Vector2(150, 0) +offset_left = 60.0 +offset_top = 64.0 +offset_right = 210.0 +offset_bottom = 96.0 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +text = "[url=2][wave amp=8.0 freq=2.0]一家人都是骗子[/wave][/url]" +fit_content = true +meta_underlined = false +hint_underlined = false +script = ExtResource("14_ef5eh") +id = "2" + +[node name="文字Root2" type="Node2D" parent="Ground/DeployLayer" index="11"] +z_index = 6 +script = ExtResource("14_n4q25") +id_range = Vector2i(15, 34) + +[node name="1" type="RichTextLabel" parent="Ground/DeployLayer/文字Root2"] +self_modulate = Color(0.745098, 0.745098, 0.745098, 1) +light_mask = 16 +custom_minimum_size = Vector2(150, 0) +offset_left = 627.0 +offset_top = 64.0 +offset_right = 777.0 +offset_bottom = 80.0 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +text = "[url=1][wave amp=8.0 freq=2.0]假神医?[/wave][/url]" +fit_content = true +meta_underlined = false +hint_underlined = false +script = ExtResource("14_ef5eh") +id = "1" + +[node name="2" type="RichTextLabel" parent="Ground/DeployLayer/文字Root2"] +self_modulate = Color(0.745098, 0.745098, 0.745098, 1) +light_mask = 16 +custom_minimum_size = Vector2(150, 0) +offset_left = 642.0 +offset_top = 5.0 +offset_right = 792.0 +offset_bottom = 21.0 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +text = "[url=1][wave amp=8.0 freq=2.0]假神医?[/wave][/url]" +fit_content = true +meta_underlined = false +hint_underlined = false +script = ExtResource("14_ef5eh") +id = "1" + +[node name="3" type="RichTextLabel" parent="Ground/DeployLayer/文字Root2"] +self_modulate = Color(0.745098, 0.745098, 0.745098, 1) +light_mask = 16 +custom_minimum_size = Vector2(150, 0) +offset_left = 899.0 +offset_top = -69.0 +offset_right = 1049.0 +offset_bottom = -53.0 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +text = "[url=1][wave amp=8.0 freq=2.0]假神医?[/wave][/url]" +fit_content = true +meta_underlined = false +hint_underlined = false +script = ExtResource("14_ef5eh") +id = "1" + +[node name="4" type="RichTextLabel" parent="Ground/DeployLayer/文字Root2"] +self_modulate = Color(0.745098, 0.745098, 0.745098, 1) +light_mask = 16 +custom_minimum_size = Vector2(150, 0) +offset_left = 959.0 +offset_top = -8.0 +offset_right = 1109.0 +offset_bottom = 8.0 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +text = "[url=1][wave amp=8.0 freq=2.0]假神医?[/wave][/url]" +fit_content = true +meta_underlined = false +hint_underlined = false +script = ExtResource("14_ef5eh") +id = "1" + +[node name="6" type="RichTextLabel" parent="Ground/DeployLayer/文字Root2"] +self_modulate = Color(0.745098, 0.745098, 0.745098, 1) +light_mask = 16 +custom_minimum_size = Vector2(150, 0) +offset_left = 625.0 +offset_top = -54.0 +offset_right = 775.0 +offset_bottom = -38.0 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +text = "[url=1][wave amp=8.0 freq=2.0]假神医?[/wave][/url]" +fit_content = true +meta_underlined = false +hint_underlined = false +script = ExtResource("14_ef5eh") +id = "1" + +[node name="5" type="RichTextLabel" parent="Ground/DeployLayer/文字Root2"] +self_modulate = Color(0.745098, 0.745098, 0.745098, 1) +light_mask = 16 +custom_minimum_size = Vector2(150, 0) +offset_left = 959.0 +offset_top = 56.0 +offset_right = 1109.0 +offset_bottom = 72.0 +theme_override_colors/default_color = Color(1, 0, 0, 1) +theme_override_fonts/normal_font = ExtResource("14_om2jl") +theme_override_font_sizes/normal_font_size = 15 +bbcode_enabled = true +text = "[url=1][wave amp=8.0 freq=2.0]假神医?[/wave][/url]" +fit_content = true +meta_underlined = false +hint_underlined = false +script = ExtResource("14_ef5eh") +id = "1" + [node name="MainPlayer" parent="Ground" index="5"] position = Vector2(63, 95) catty_light_energy = 0.5 @@ -102,10 +403,9 @@ texture = ExtResource("14_0i4ir") offset = Vector2(0, 50) [node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] -points = PackedVector2Array(20, 150, 533, 151) +points = PackedVector2Array(20, 150, 1190, 151) [node name="DirectionalLight2D" parent="Ground" index="8"] -visible = false energy = 0.8 blend_mode = 1 diff --git a/scene/ground/script/c04/s06_closeup日历.tscn b/scene/ground/script/c04/s06_closeup日历.tscn index 92790201..20b34519 100644 --- a/scene/ground/script/c04/s06_closeup日历.tscn +++ b/scene/ground/script/c04/s06_closeup日历.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=6 format=3 uid="uid://dhrc5sc21rwc"] +[gd_scene load_steps=7 format=3 uid="uid://dhrc5sc21rwc"] [ext_resource type="Script" uid="uid://cvsj8mktuf8wn" path="res://scene/ground/script/c04/s06_closeup日历.gd" id="1_e3s2p"] [ext_resource type="Texture2D" uid="uid://cbql1i4hblmt1" path="res://asset/art/ui/遮罩/inspect特写通用遮罩.png" id="2_6av83"] +[ext_resource type="Texture2D" uid="uid://bhd6bhcvhe33g" path="res://asset/art/scene/c04/s06_小蝶房间/日记游戏/日历特写/日历01-3月1日.png" id="2_e3s2p"] [ext_resource type="PackedScene" uid="uid://dmysq4sxx8iqh" path="res://scene/entity/ux/content_inspector.tscn" id="3_e35wp"] [ext_resource type="Texture2D" uid="uid://f186lvt5y2ql" path="res://asset/art/ui/遮罩/inspect背景遮罩.png" id="5_0yds4"] [ext_resource type="Script" uid="uid://dpocj5al0rvai" path="res://ui/text_helper.gd" id="6_p5dpr"] @@ -15,6 +16,7 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +texture = ExtResource("2_e3s2p") [node name="遮罩" type="TextureRect" parent="."] anchors_preset = 15 @@ -26,6 +28,7 @@ mouse_filter = 2 texture = ExtResource("2_6av83") [node name="ContentInspector" parent="." instance=ExtResource("3_e35wp")] +visible = false [node name="遮罩" type="TextureRect" parent="ContentInspector"] layout_mode = 1 diff --git a/scene/ground/script/c04/s09_除晦游戏反色效果.gdshader b/scene/ground/script/c04/s09_除晦游戏反色效果.gdshader new file mode 100644 index 00000000..7b0bb9e9 --- /dev/null +++ b/scene/ground/script/c04/s09_除晦游戏反色效果.gdshader @@ -0,0 +1,62 @@ +shader_type canvas_item; + +// sprite_texture 即为 Sprite2D 自身的纹理(内置:TEXTURE) +// 外部参数:mask_texture(与 sprite_texture 高度相同,宽度 = width_ratio * sprite_width) +// width_ratio < 1 为常量(运行时不变) +// offset_ratio 会在物理帧中不断更新,控制 mask 在 sprite 上的水平起点(0 表示最左端,1 - width_ratio 表示最右端) + +uniform sampler2D mask_texture; +uniform float modulate_a : hint_range(0.0, 1.0) = 1.0; // mask_texture.width / sprite_texture.width +uniform float half_width_ratio : hint_range(0.1, 1.0) = 0.5; // mask_texture.width / sprite_texture.width +uniform float offset_ratio : hint_range(0.01, 1.0) = 0.01; // mask 左边界起点在 sprite UV(0~1)中的比例 + +// 当 mask 的 alpha > 0.5(或你需要的阈值)时显示 sprite,对应区域 alpha = 原纹理 alpha,否则 alpha = 0。 +uniform float alpha_threshold : hint_range(0.0, 1.0) = 0.5; + +void fragment() { + // 基础 sprite 采样 + vec4 sprite_col = texture(TEXTURE, UV); + + // 将 sprite 的 UV(0~1)映射到 mask 的 UV: + // mask 横向只覆盖 [offset_ratio, offset_ratio + width_ratio] 的区间 + // 在该区间内,线性映射到 mask 的 [0, 1] 横向。区间之外,直接视为 mask alpha = 0。 + float u = UV.x; + float v = UV.y; + + // 判断是否在 mask 的横向覆盖范围内 + float left = offset_ratio - half_width_ratio; + float right = offset_ratio + half_width_ratio; + + // 缩放到 mask 的 U 坐标(0~1) + float mask_u = 0.5 * (u - left) / half_width_ratio; + float mask_v = v; // 高度一致,直接使用同一 v 坐标(0~1) + + // 默认 mask alpha = 0 + float mask_a = 0.0; + + // 仅在覆盖范围内采样 mask 纹理 + if (u >= left && u <= right) { + vec4 mask_col = texture(mask_texture, vec2(mask_u, mask_v)); + mask_a = mask_col.a; + } + + // 应用阈值或直接乘 alpha(两种方式任选其一) + // 方式 A:阈值裁剪(更硬边) + float visible = step(alpha_threshold, mask_a); + // visible && white + float col_rgb = step(alpha_threshold, visible * COLOR.a); + + // 输出:颜色保持原纹理(也可以乘 mask_a 做软边),alpha 由 visible 控制 + // 如果你想要软边,替换为 sprite_col.a *= mask_a; + vec4 out_col = sprite_col; + out_col.rgb = vec3(col_rgb); + // 纯黑手掌 + out_col.a = visible * modulate_a; + // 半透明的手掌 + //out_col.a = visible * modulate_a * max(col_rgb, 0.2); + + // 可选:也让 RGB 乘以 visible,避免半透明像素渗色 + //out_col.rgb *= visible; + + COLOR = out_col; +} \ No newline at end of file diff --git a/scene/ground/script/c04/s09_除晦游戏反色效果.gdshader.uid b/scene/ground/script/c04/s09_除晦游戏反色效果.gdshader.uid new file mode 100644 index 00000000..50ada48f --- /dev/null +++ b/scene/ground/script/c04/s09_除晦游戏反色效果.gdshader.uid @@ -0,0 +1 @@ +uid://c4ioalmumivey diff --git a/scene/ground/script/c04/除晦游戏label.gd b/scene/ground/script/c04/除晦游戏label.gd new file mode 100644 index 00000000..e1385aed --- /dev/null +++ b/scene/ground/script/c04/除晦游戏label.gd @@ -0,0 +1,45 @@ +@tool +extends RichTextLabel + +@export var id := 1: + set(val): + id = val + if is_node_ready(): + refresh() +@warning_ignore("unused_private_class_variable") +@export_tool_button("刷新") var _refresh = refresh + +const self_mod = Color.GRAY + + +func _ready() -> void: + refresh() + self_modulate = self_mod + meta_hover_started.connect(_on_meta_hover_started) + meta_hover_ended.connect(_on_meta_hover_ended) + + +# res://asset/dialogue/inspect_content.zh_CN.translation +var items_translation = preload("uid://eu5aw5htt74r") as Translation + + +func refresh(): + var translation_key = "c04_除晦游戏" + str(id) + var msg = tr(translation_key) + if Engine.is_editor_hint(): + msg = items_translation.get_message(translation_key) + msg = msg.replace("{br}", "\n") + text = '[url=' + str(id) + '][wave amp=8.0 freq=2.0]' + msg + "[/wave][/url]" + + +func _notification(what: int) -> void: + if what == NOTIFICATION_TRANSLATION_CHANGED: + refresh() + + +func _on_meta_hover_started(_m) -> void: + self_modulate = Color.WHITE + + +func _on_meta_hover_ended(_m) -> void: + self_modulate = self_mod diff --git a/scene/ground/script/c04/除晦游戏label.gd.uid b/scene/ground/script/c04/除晦游戏label.gd.uid new file mode 100644 index 00000000..7102d0c5 --- /dev/null +++ b/scene/ground/script/c04/除晦游戏label.gd.uid @@ -0,0 +1 @@ +uid://bvkqk6qf83nux diff --git a/scene/ground/script/c04/除晦游戏文字root.gd b/scene/ground/script/c04/除晦游戏文字root.gd new file mode 100644 index 00000000..74fd3461 --- /dev/null +++ b/scene/ground/script/c04/除晦游戏文字root.gd @@ -0,0 +1,75 @@ +extends Node2D + +signal game_success + +# inclusive, exclusive +@export var id_range := Vector2i(1, 15) + +var available_labels: Array[RichTextLabel] = [] +# 0:hide 1:display 2:cleared +var id_state_arr: Array[int] = [] +var display_timer := Timer.new() + + +func _ready() -> void: + for c in get_children(): + if c is RichTextLabel: + available_labels.append(c) + c.modulate.a = 0.0 + c.meta_clicked.connect(_on_meta_clicked.bind(c)) + id_state_arr.resize(id_range.y - id_range.x) + # 初始化文本 + add_child(display_timer) + display_timer.wait_time = 1.5 + display_timer.timeout.connect(_display_next) + # _reset_overtime_tween() + + +func start_disperse_game() -> void: + display_timer.start() + + +# 分配一个 id 到 labels 上 +func _display_next() -> void: + if not available_labels: + if GlobalConfig.DEBUG: + print("no available labels") + return + var label = available_labels.pop_front() + var next_id = -1 + for i in range(len(id_state_arr)): + if id_state_arr[i] == 0: + next_id = i + id_range.x + id_state_arr[i] = 1 + break + if GlobalConfig.DEBUG: + print("next_id=", next_id) + if next_id > 0: + label.id = next_id + var tween = create_tween() + tween.tween_property(label, "modulate:a", 1.0, 1.0) + + +func _on_meta_clicked(meta, label: RichTextLabel): + var id = int(meta) + if id_state_arr[id - id_range.x] != 1: + return + available_labels.append(label) + id_state_arr[id - id_range.x] = 2 + var tween = create_tween() + tween.tween_property(label, "modulate:a", 0.0, 1.0) + + if id_state_arr.all(func(i): return i==2): + game_success.emit() + print("game success") + +# _reset_overtime_tween() + +# # 长时间不点击 +# var overtime_tween: Tween + +# func _reset_overtime_tween() -> void: +# if overtime_tween and overtime_tween.is_running(): +# overtime_tween.kill() +# overtime_tween = create_tween() +# overtime_tween.tween_interval(2.0) diff --git a/scene/ground/script/c04/除晦游戏文字root.gd.uid b/scene/ground/script/c04/除晦游戏文字root.gd.uid new file mode 100644 index 00000000..541707b2 --- /dev/null +++ b/scene/ground/script/c04/除晦游戏文字root.gd.uid @@ -0,0 +1 @@ +uid://bm1luy5kk6sbv diff --git a/scene/ux/prop_hud.tscn b/scene/ux/prop_hud.tscn index b92036f4..f38a5e95 100644 --- a/scene/ux/prop_hud.tscn +++ b/scene/ux/prop_hud.tscn @@ -20,13 +20,13 @@ font_size = 36 [node name="PropHUD" type="Control"] process_mode = 3 -custom_minimum_size = Vector2(600, 500) +custom_minimum_size = Vector2(300, 230) layout_mode = 3 anchors_preset = 0 offset_left = 8.0 offset_top = 4.0 offset_right = 608.0 -offset_bottom = 504.0 +offset_bottom = 204.0 scale = Vector2(0.3, 0.3) mouse_filter = 1 script = ExtResource("1_bbv0a")