优化sign snapper交互过程:delay-arrived-wait; 第一章火灾牵手跑演出
@ -1,14 +1,13 @@
|
||||
[gd_resource type="SpriteFrames" load_steps=99 format=3 uid="uid://b0icyhxpj16tv"]
|
||||
[gd_resource type="SpriteFrames" load_steps=98 format=3 uid="uid://b0icyhxpj16tv"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://swoydeghhp4f" path="res://asset/art/gif/c02_谢幕演出/一起牵手跑步/0.png" id="1_dcxit"]
|
||||
[ext_resource type="Texture2D" uid="uid://c1b5ek0diwa4u" path="res://asset/art/gif/c02_谢幕演出/一起牵手跑步/1.png" id="2_qjesf"]
|
||||
[ext_resource type="Texture2D" uid="uid://1b1a4f4ehfx5" path="res://asset/art/gif/c02_谢幕演出/一起牵手跑步/2.png" id="3_6x1hw"]
|
||||
[ext_resource type="Texture2D" uid="uid://fhrrv6vj8ac7" path="res://asset/art/gif/c02_谢幕演出/一起牵手跑步/3.png" id="4_3rik6"]
|
||||
[ext_resource type="Texture2D" uid="uid://xap5cy8ibaom" path="res://asset/art/gif/c02_谢幕演出/一起牵手跑步/4.png" id="5_ysr4j"]
|
||||
[ext_resource type="Texture2D" uid="uid://mirprq71s1i3" path="res://asset/art/gif/c02_谢幕演出/一起牵手跑步/5.png" id="6_roeuf"]
|
||||
[ext_resource type="Texture2D" uid="uid://i2horxpxqdl1" path="res://asset/art/gif/c02_谢幕演出/一起牵手跑步/6.png" id="7_hlqm1"]
|
||||
[ext_resource type="Texture2D" uid="uid://bbobudcd1x0x0" path="res://asset/art/gif/c02_谢幕演出/一起牵手跑步/7.png" id="8_jn752"]
|
||||
[ext_resource type="Texture2D" uid="uid://c4mcicg5jh1w3" path="res://asset/art/gif/c02_谢幕演出/一起牵手跑步/8.png" id="9_gt5gk"]
|
||||
[ext_resource type="Texture2D" uid="uid://3yp8wjdlisg7" path="res://asset/art/gif/c02_谢幕演出/一起牵手跑步/0.png" id="1_dcxit"]
|
||||
[ext_resource type="Texture2D" uid="uid://dy0c87f4lyanb" path="res://asset/art/gif/c02_谢幕演出/一起牵手跑步/1.png" id="2_qjesf"]
|
||||
[ext_resource type="Texture2D" uid="uid://cpbwro2r8rxq8" path="res://asset/art/gif/c02_谢幕演出/一起牵手跑步/2.png" id="3_6x1hw"]
|
||||
[ext_resource type="Texture2D" uid="uid://b4sptoxq8cad0" path="res://asset/art/gif/c02_谢幕演出/一起牵手跑步/3.png" id="4_3rik6"]
|
||||
[ext_resource type="Texture2D" uid="uid://btduvh8b3c4ew" path="res://asset/art/gif/c02_谢幕演出/一起牵手跑步/4.png" id="5_ysr4j"]
|
||||
[ext_resource type="Texture2D" uid="uid://dr6e7jomshvsh" path="res://asset/art/gif/c02_谢幕演出/一起牵手跑步/5.png" id="6_roeuf"]
|
||||
[ext_resource type="Texture2D" uid="uid://cjj7vu23hgak7" path="res://asset/art/gif/c02_谢幕演出/一起牵手跑步/6.png" id="7_hlqm1"]
|
||||
[ext_resource type="Texture2D" uid="uid://erpp4jgxj2y6" path="res://asset/art/gif/c02_谢幕演出/一起牵手跑步/7.png" id="8_jn752"]
|
||||
[ext_resource type="Texture2D" uid="uid://cipqugfhrxn0l" path="res://asset/art/gif/c02_谢幕演出/小婵呼吸_牵手前/0.png" id="18_qjesf"]
|
||||
[ext_resource type="Texture2D" uid="uid://dsxns084r0yvw" path="res://asset/art/gif/c02_谢幕演出/小婵呼吸_牵手前/1.png" id="19_6x1hw"]
|
||||
[ext_resource type="Texture2D" uid="uid://dxo626pxfvhyi" path="res://asset/art/gif/c02_谢幕演出/吕萍牵手动作/0.png" id="724_met76"]
|
||||
@ -102,36 +101,33 @@
|
||||
[resource]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"duration": 3.0,
|
||||
"texture": ExtResource("1_dcxit")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"duration": 3.0,
|
||||
"texture": ExtResource("2_qjesf")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"duration": 3.0,
|
||||
"texture": ExtResource("3_6x1hw")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"duration": 3.0,
|
||||
"texture": ExtResource("4_3rik6")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"duration": 3.0,
|
||||
"texture": ExtResource("5_ysr4j")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"duration": 3.0,
|
||||
"texture": ExtResource("6_roeuf")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"duration": 3.0,
|
||||
"texture": ExtResource("7_hlqm1")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"duration": 3.0,
|
||||
"texture": ExtResource("8_jn752")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("9_gt5gk")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"一起牵手跑步",
|
||||
"speed": 6.0
|
||||
"speed": 30.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 9.9,
|
||||
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB |
@ -2,7 +2,7 @@
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://swoydeghhp4f"
|
||||
uid="uid://3yp8wjdlisg7"
|
||||
path="res://.godot/imported/0.png-92b018576272d5383ade0c5425e3e597.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
@ -2,7 +2,7 @@
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c1b5ek0diwa4u"
|
||||
uid="uid://dy0c87f4lyanb"
|
||||
path="res://.godot/imported/1.png-1b3a5f61b7fc7400030e7cd8f1542c75.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.6 KiB |
@ -2,7 +2,7 @@
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://1b1a4f4ehfx5"
|
||||
uid="uid://cpbwro2r8rxq8"
|
||||
path="res://.godot/imported/2.png-544365b37e70fc733fe86187c62f642a.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.3 KiB |
@ -2,7 +2,7 @@
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://fhrrv6vj8ac7"
|
||||
uid="uid://b4sptoxq8cad0"
|
||||
path="res://.godot/imported/3.png-b483acae7f7d03af171d5eef5022a25c.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.2 KiB |
@ -2,7 +2,7 @@
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://xap5cy8ibaom"
|
||||
uid="uid://btduvh8b3c4ew"
|
||||
path="res://.godot/imported/4.png-7785b7bf47d72e8bef66608fe4e73845.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.8 KiB |
@ -2,7 +2,7 @@
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://mirprq71s1i3"
|
||||
uid="uid://dr6e7jomshvsh"
|
||||
path="res://.godot/imported/5.png-d1d4086f4191000c0a18248983de900b.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.7 KiB |
@ -2,7 +2,7 @@
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://i2horxpxqdl1"
|
||||
uid="uid://cjj7vu23hgak7"
|
||||
path="res://.godot/imported/6.png-f217728f71b67bd30ef229b5aec5340e.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.3 KiB |
@ -2,7 +2,7 @@
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bbobudcd1x0x0"
|
||||
uid="uid://erpp4jgxj2y6"
|
||||
path="res://.godot/imported/7.png-d76ef97d58c7c3fc046c6dfdcb091398.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
|
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.6 KiB |
BIN
asset/art/gif/c02_谢幕演出/小婵牵手动作/0.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
@ -2,16 +2,16 @@
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c4mcicg5jh1w3"
|
||||
path="res://.godot/imported/8.png-91f27a22601ccff43ca64caf14ff17c2.ctex"
|
||||
uid="uid://c1x2puu766w64"
|
||||
path="res://.godot/imported/0.png-aec4a844a4e7d0020a35b69d15e1821a.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c02_谢幕演出/一起牵手跑步/8.png"
|
||||
dest_files=["res://.godot/imported/8.png-91f27a22601ccff43ca64caf14ff17c2.ctex"]
|
||||
source_file="res://asset/art/gif/c02_谢幕演出/小婵牵手动作/0.png"
|
||||
dest_files=["res://.godot/imported/0.png-aec4a844a4e7d0020a35b69d15e1821a.ctex"]
|
||||
|
||||
[params]
|
||||
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
@ -1,14 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="gif.animated.texture.plugin"
|
||||
type="SpriteFrames"
|
||||
uid="uid://ct8il0g3ehxn2"
|
||||
path="res://.godot/imported/小婵牵手跑步改后.gif-68a53fa1e4ac29f594171f2a9efb822f.tres"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c02_谢幕演出/小婵牵手跑步改后.gif"
|
||||
dest_files=["res://.godot/imported/小婵牵手跑步改后.gif-68a53fa1e4ac29f594171f2a9efb822f.tres"]
|
||||
|
||||
[params]
|
||||
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.2 KiB |
@ -1,4 +1,4 @@
|
||||
[gd_resource type="SpriteFrames" load_steps=87 format=3 uid="uid://bwdidg1akthvf"]
|
||||
[gd_resource type="SpriteFrames" load_steps=85 format=3 uid="uid://bwdidg1akthvf"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://b1o46xue726he" path="res://asset/art/gif/c02_谢幕演出小蝶分镜/嘴巴动效/0.png" id="1_4fn1h"]
|
||||
[ext_resource type="Texture2D" uid="uid://dwusvap6pt8su" path="res://asset/art/gif/c02_谢幕演出小蝶分镜/嘴巴动效/1.png" id="2_6d3ut"]
|
||||
@ -71,8 +71,6 @@
|
||||
[ext_resource type="Texture2D" uid="uid://d2vjmjovcpld1" path="res://asset/art/gif/c02_谢幕演出小蝶分镜/闭眼动效/4.png" id="112_yu3om"]
|
||||
[ext_resource type="Texture2D" uid="uid://dfd3von84nk8l" path="res://asset/art/gif/c02_谢幕演出小蝶分镜/闭眼动效/5.png" id="113_hcxtl"]
|
||||
[ext_resource type="Texture2D" uid="uid://buuf2rxccnij5" path="res://asset/art/gif/c02_谢幕演出小蝶分镜/闭眼动效/6.png" id="114_jxtmx"]
|
||||
[ext_resource type="Texture2D" uid="uid://cgop588y1kpui" path="res://asset/art/gif/c02_谢幕演出小蝶分镜/闭眼动效/7.png" id="115_xf5cy"]
|
||||
[ext_resource type="Texture2D" uid="uid://bnrtr7p3hl8pd" path="res://asset/art/gif/c02_谢幕演出小蝶分镜/闭眼动效/8.png" id="116_q7mkn"]
|
||||
|
||||
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_6d3ut"]
|
||||
load_path = "res://.godot/imported/3.png-af7c560e9537fd9b091512aed74c448e.ctex"
|
||||
@ -432,32 +430,26 @@ animations = [{
|
||||
"speed": 30.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.5,
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("108_nibmg")
|
||||
}, {
|
||||
"duration": 1.5,
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("109_kqeyo")
|
||||
}, {
|
||||
"duration": 1.5,
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("110_o2psr")
|
||||
}, {
|
||||
"duration": 1.5,
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("111_6dxhq")
|
||||
}, {
|
||||
"duration": 1.5,
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("112_yu3om")
|
||||
}, {
|
||||
"duration": 1.5,
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("113_hcxtl")
|
||||
}, {
|
||||
"duration": 15.0,
|
||||
"duration": 90.0,
|
||||
"texture": ExtResource("114_jxtmx")
|
||||
}, {
|
||||
"duration": 30.0,
|
||||
"texture": ExtResource("115_xf5cy")
|
||||
}, {
|
||||
"duration": 30.0,
|
||||
"texture": ExtResource("116_q7mkn")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"闭眼动效",
|
||||
|
BIN
asset/art/scene/c01/s09_黄包车长场景/bg_夜晚黄包车场景.jpg
Normal file
After Width: | Height: | Size: 2.7 MiB |
34
asset/art/scene/c01/s09_黄包车长场景/bg_夜晚黄包车场景.jpg.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c7m10rk4cw3lf"
|
||||
path="res://.godot/imported/bg_夜晚黄包车场景.jpg-63d9ff77177682efbd12e4b154e85d56.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/scene/c01/s09_黄包车长场景/bg_夜晚黄包车场景.jpg"
|
||||
dest_files=["res://.godot/imported/bg_夜晚黄包车场景.jpg-63d9ff77177682efbd12e4b154e85d56.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
|
Before Width: | Height: | Size: 972 KiB |
@ -1,24 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://poyp61gxyqer"
|
||||
path="res://.godot/imported/c02_小孩喊着火啦.wav-bcd1f60d994074e9e8a8a92864e6c250.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/audio/peiyin_new/c02/c02_小孩喊着火啦.wav"
|
||||
dest_files=["res://.godot/imported/c02_小孩喊着火啦.wav-bcd1f60d994074e9e8a8a92864e6c250.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=2
|
BIN
asset/audio/sfx/交互/sfx_交互失败.wav
Normal file
24
asset/audio/sfx/交互/sfx_交互失败.wav.import
Normal file
@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://dph8v3v5mq1xl"
|
||||
path="res://.godot/imported/sfx_交互失败.wav-97e55abf1cbf14ddbe3e7e9ede2df3f3.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/audio/sfx/交互/sfx_交互失败.wav"
|
||||
dest_files=["res://.godot/imported/sfx_交互失败.wav-97e55abf1cbf14ddbe3e7e9ede2df3f3.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=2
|
@ -15,6 +15,9 @@
|
||||
如有知其下落者请赐信,备有重谢,绝不失言。 [ID:c02_寻人启事_完整3]
|
||||
=> END
|
||||
|
||||
~ c02_海报1
|
||||
战胜北方鼠疫之二杰 [ID:c02_海报1]
|
||||
=> END
|
||||
|
||||
~ c02_青岛啤酒
|
||||
系最好最廉之酒,并且每星期有新货到埠 [ID:c02_青岛啤酒详情]
|
||||
@ -27,9 +30,6 @@
|
||||
民国五年一月十三日 [ID:t736cca4563]
|
||||
=> END
|
||||
|
||||
~ c02_海报1
|
||||
战胜北方鼠疫之二杰 [ID:c02_海报1]
|
||||
=> END
|
||||
|
||||
~ c02_保卫科花名册
|
||||
一零一四 空 [ID:c02_保卫科花名册1]
|
||||
|
@ -41,7 +41,11 @@ func c02_fire_count_down_try_start():
|
||||
return
|
||||
c02_fire_count_down_timer = Timer.new()
|
||||
c02_fire_count_down_timer.autostart = true
|
||||
c02_fire_count_down_timer.wait_time = 10
|
||||
if GlobalConfig.DEBUG:
|
||||
SceneManager.pop_debug_dialog_info("debug", "当前为测试模式,倒计时 10s;正式模式倒计时 60s")
|
||||
c02_fire_count_down_timer.wait_time = 10
|
||||
else:
|
||||
c02_fire_count_down_timer.wait_time = 60
|
||||
c02_fire_count_down_timer.one_shot = false
|
||||
c02_fire_count_down_timer.timeout.connect(_on_c02_fire_count_down_timeout)
|
||||
add_child(c02_fire_count_down_timer)
|
||||
@ -53,7 +57,7 @@ func _on_c02_fire_count_down_timeout():
|
||||
SceneManager.pop_debug_dialog_info("音效", "【重开】霸凌救小蝉倒计时")
|
||||
c02_fire_count_down_timer.stop()
|
||||
AudioManager.stop_bgm_music("霸凌救小蝉倒计时")
|
||||
DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_未完成拯救小蝉的游戏")
|
||||
DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_未完成拯救小蝉的游戏", [GlobalConfig.DIALOG_IGNORE_INPUT])
|
||||
await get_tree().create_timer(1.0).timeout
|
||||
SceneManager.show_black_hand(true, 0.5)
|
||||
await get_tree().create_timer(3.0).timeout
|
||||
|
@ -94,6 +94,14 @@ func unlock_player():
|
||||
# player.operational = val
|
||||
|
||||
|
||||
func player_action(action_code : int, auto_quit := false):
|
||||
var player = get_player()
|
||||
if player:
|
||||
player.player_action(action_code, auto_quit)
|
||||
else:
|
||||
printerr("player_action: Player node not found")
|
||||
|
||||
|
||||
# action_freezed 对应 freeze 与 release 方法
|
||||
# lock_time: the time to lock the player action. 0 means lock forever, thus the player will be locked until release_player is called.
|
||||
func freeze_player(lock_time: float, action := 3, auto_quit := false) -> void:
|
||||
|
@ -278,18 +278,10 @@ func set_catty_light(enable := false):
|
||||
tween.tween_property(catty_light, "energy", 0.0, 0.5)
|
||||
|
||||
|
||||
var lock_mutex = Mutex.new()
|
||||
var release_timer: SceneTreeTimer
|
||||
|
||||
|
||||
# 自动解除对应 animation 的 loop 状态
|
||||
# lock_time: the time to lock the player action. 0 means lock forever, thus the player will be locked until release_player is called.
|
||||
func freeze_player(lock_time: float, action_animation: int, auto_quit: bool) -> void:
|
||||
lock_mutex.lock()
|
||||
action_freezed = true
|
||||
if current_animation_config.has(action_animation):
|
||||
func player_action(action_code: int, auto_quit: bool):
|
||||
if current_animation_config.has(action_code):
|
||||
# animation_name, scale, offset
|
||||
var config = current_animation_config[action_animation]
|
||||
var config = current_animation_config[action_code]
|
||||
var animation_l = config[0]
|
||||
var animation_r = config[0]
|
||||
sprite.scale = config[1]
|
||||
@ -304,6 +296,18 @@ func freeze_player(lock_time: float, action_animation: int, auto_quit: bool) ->
|
||||
sprite.animation_looped.connect(_play_animation, CONNECT_ONE_SHOT)
|
||||
else:
|
||||
sprite.animation_finished.connect(_play_animation, CONNECT_ONE_SHOT)
|
||||
|
||||
|
||||
var lock_mutex = Mutex.new()
|
||||
var release_timer: SceneTreeTimer
|
||||
|
||||
|
||||
# 自动解除对应 animation 的 loop 状态
|
||||
# lock_time: the time to lock the player action. 0 means lock forever, thus the player will be locked until release_player is called.
|
||||
func freeze_player(lock_time: float, action_code: int, auto_quit: bool) -> void:
|
||||
lock_mutex.lock()
|
||||
action_freezed = true
|
||||
player_action(action_code, auto_quit)
|
||||
if lock_time:
|
||||
if release_timer and release_timer.time_left > 0:
|
||||
release_timer.time_left = max(lock_time, release_timer.time_left)
|
||||
|
@ -20,6 +20,13 @@ signal sign_mark_offset_updated
|
||||
trigger_mode = val
|
||||
if is_node_ready():
|
||||
_check_sign_display()
|
||||
@export var collision_width_and_x := Vector2(20.0, 0):
|
||||
set(val):
|
||||
collision_width_and_x = val
|
||||
if is_node_ready():
|
||||
var shape = area2d.get_node("CollisionShape2D").shape
|
||||
shape.size.x = collision_width_and_x.x
|
||||
area2d.position.x = collision_width_and_x.y
|
||||
@export var interacted_sign_texture: Texture2D
|
||||
@export var one_shot := true
|
||||
# 首次进入 tree 就直接启用
|
||||
@ -66,7 +73,8 @@ var played_time := 0.0
|
||||
# played = val
|
||||
|
||||
@onready var sign_mark := %Sign as Sign
|
||||
@onready var area := %Area2D as Area2D
|
||||
@onready var area2d := %Area2D as Area2D
|
||||
|
||||
var ground_archive: GroundArchive
|
||||
var played: bool:
|
||||
set(val):
|
||||
@ -79,6 +87,9 @@ var played: bool:
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
var shape = area2d.get_node("CollisionShape2D").shape
|
||||
shape.size.x = collision_width_and_x.x
|
||||
area2d.position.x = collision_width_and_x.y
|
||||
if Engine.is_editor_hint():
|
||||
var animation_player = _get_animation_player()
|
||||
# 更新 hook_animation 的可选项
|
||||
@ -101,8 +112,8 @@ func _ready() -> void:
|
||||
if one_shot:
|
||||
return
|
||||
sign_mark.interacted.connect(_interacted)
|
||||
area.body_entered.connect(_entered)
|
||||
area.area_entered.connect(_area_entered)
|
||||
area2d.body_entered.connect(_entered)
|
||||
area2d.area_entered.connect(_area_entered)
|
||||
if on_first_enter_tree:
|
||||
_do_trigger.call_deferred()
|
||||
|
||||
|
@ -6,10 +6,11 @@
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_iwrfx"]
|
||||
resource_local_to_scene = true
|
||||
size = Vector2(10, 70)
|
||||
size = Vector2(25, 70)
|
||||
|
||||
[node name="Ambush" type="Sprite2D"]
|
||||
script = ExtResource("1_rxgbr")
|
||||
collision_width_and_x = Vector2(25, 0)
|
||||
interacted_sign_texture = ExtResource("2_1tnxk")
|
||||
hook_dialogue_title = ""
|
||||
hook_animation = ""
|
||||
|
@ -11,18 +11,14 @@ signal exit(arg)
|
||||
@export var first_interact_os_key := ""
|
||||
@export var packed_scene: PackedScene
|
||||
@export var quit_closeup_on_escape := true
|
||||
|
||||
var current_child: Node
|
||||
|
||||
@onready var sign_snapper = %SignSnapper as SignSnapper
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
super._ready()
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
# interacted.connect(_close_up_interacted)
|
||||
sign_snapper.arrived.connect(_close_up_interacted)
|
||||
interacted.connect(_close_up_interacted)
|
||||
|
||||
|
||||
func _close_up_interacted() -> void:
|
||||
@ -30,12 +26,11 @@ func _close_up_interacted() -> void:
|
||||
SceneManager.freeze_player(0, action_key)
|
||||
sign_mark.display_sign = false
|
||||
var tween = await SceneManager.pop_os_with_str(first_interact_os_key)
|
||||
tween.tween_interval(0.5)
|
||||
tween.tween_callback(display)
|
||||
tween.tween_callback(func(): sign_mark.display_sign = true)
|
||||
else:
|
||||
SceneManager.freeze_player(0, action_key)
|
||||
get_tree().create_timer(0.5).timeout.connect(display)
|
||||
display()
|
||||
|
||||
|
||||
# 可以直接调用
|
||||
|
@ -10,10 +10,12 @@
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_ogin7"]
|
||||
resource_local_to_scene = true
|
||||
size = Vector2(30, 70)
|
||||
size = Vector2(25, 70)
|
||||
|
||||
[node name="Closeup" type="Sprite2D"]
|
||||
script = ExtResource("1_tvfr1")
|
||||
enable_snapper = null
|
||||
collision_width_and_x = Vector2(25, 0)
|
||||
unrevealed_sign_texture = ExtResource("2_dnubm")
|
||||
unmatched_sign_texture = ExtResource("3_dnubm")
|
||||
matched_sign_texture = ExtResource("4_18yy2")
|
||||
@ -47,4 +49,6 @@ script = ExtResource("7_dnubm")
|
||||
release_player_on_arrived = false
|
||||
radius = 3.0
|
||||
delay_arrived = 0.1
|
||||
action_on_arrived = 4
|
||||
delay_after_action = 0.4
|
||||
metadata/_custom_type_script = "uid://cnt01hiw52bmn"
|
||||
|
@ -1,30 +1,65 @@
|
||||
@tool
|
||||
extends Sprite2D
|
||||
|
||||
signal start_inspecting
|
||||
signal quit_inspecting
|
||||
signal sign_mark_offset_updated
|
||||
|
||||
# @export var entity_config: EntityConfig:
|
||||
# set(value):
|
||||
# entity_config = value
|
||||
|
||||
enum { STATUS_NORAML, STATUS_TRANSITIONING, STATUS_INSPECTING_COVER, STATUS_INSPECTING_NOTES }
|
||||
|
||||
@export var enabled := true:
|
||||
set(val):
|
||||
enabled = val
|
||||
if is_node_ready() and not Engine.is_editor_hint():
|
||||
sign_mark.enabled = val
|
||||
# sign_mark 节点在 ready 时会直接读取
|
||||
@export var sign_mark_offset := Vector2.ZERO:
|
||||
set(val):
|
||||
sign_mark_offset = val
|
||||
sign_mark_offset_updated.emit(val)
|
||||
# @export var entity_name: String = ""
|
||||
@export_enum("none", "c01", "c02", "c03", "c04", "c05") var editor_filter := "none":
|
||||
@export var content_centered: bool = false
|
||||
@export var action_key := 4
|
||||
@export var collision_width_and_x := Vector2(20.0, 0):
|
||||
set(val):
|
||||
collision_width_and_x = val
|
||||
if is_node_ready():
|
||||
var shape = area2d.get_node("CollisionShape2D").shape
|
||||
shape.size.x = collision_width_and_x.x
|
||||
area2d.position.x = collision_width_and_x.y
|
||||
@export var texture_cover: Texture2D
|
||||
@export var note_sign_texture: Texture2D
|
||||
@export_enum("none", "c01", "c02", "c03", "c04", "c05", "c06") var editor_filter := "none":
|
||||
set(val):
|
||||
editor_filter = val
|
||||
if is_node_ready() and Engine.is_editor_hint():
|
||||
notify_property_list_changed()
|
||||
@export var note_sign_texture: Texture2D
|
||||
@export var texture_cover: Texture2D
|
||||
@export var texture_note: Texture2D
|
||||
@export var note_centered := false
|
||||
var content_key: String = ""
|
||||
|
||||
@onready var sign_mark = %Sign as Sign
|
||||
@onready var sign_snapper = %SignSnapper as SignSnapper
|
||||
@onready var area2d = %Area2D as Area2D
|
||||
|
||||
var content_dialogue = preload("res://asset/dialogue/inspect_content.dialogue") as DialogueResource
|
||||
var inspecting = false
|
||||
@onready var sfx = %Sfx
|
||||
@onready var container = %Container
|
||||
@onready var cover_rect = %Cover as TextureRect
|
||||
@onready var content_label = %ContentLabel as Label
|
||||
@onready var tip_label = %TipLabel as Label
|
||||
|
||||
var tip_cover_hide_notes = "Q: " + tr("ui_退出") + " " + "E: " + tr("ui_阅读")
|
||||
var tip_cover_without_notes = "Q: " + tr("ui_退出") + " " + "E: " + tr("ui_检阅")
|
||||
var tip_notes = "Q: " + tr("ui_退出") + " " + "E: " + tr("ui_收起")
|
||||
|
||||
static var content_dialogue = (
|
||||
preload("res://asset/dialogue/inspect_content.dialogue") as DialogueResource
|
||||
)
|
||||
|
||||
var status := STATUS_NORAML
|
||||
var blinking_tween: Tween
|
||||
|
||||
var ground_archive: GroundArchive
|
||||
# 尝试互动的次数
|
||||
@ -35,37 +70,29 @@ var tried_times: int:
|
||||
if tried_times >= 1 and sign_mark:
|
||||
sign_mark.sprite2d.texture = note_sign_texture
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
$InspectLayer.layer = GlobalConfig.CANVAS_LAYER_PROP_INSPECTOR
|
||||
var shape = area2d.get_node("CollisionShape2D").shape
|
||||
shape.size.x = collision_width_and_x.x
|
||||
area2d.position.x = collision_width_and_x.y
|
||||
container.modulate.a = 0.0
|
||||
content_label.modulate.a = 0.0
|
||||
content_label.text = _get_tr_content()
|
||||
tip_label.text = tip_cover_hide_notes
|
||||
cover_rect.texture = texture_cover
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
area2d.body_entered.connect(_reset)
|
||||
area2d.body_exited.connect(_on_cancel)
|
||||
sign_mark.interacted.connect(_on_interacted)
|
||||
sign_mark.cancel.connect(_on_cancel)
|
||||
|
||||
sign_mark.enabled = enabled
|
||||
# setup default value
|
||||
ground_archive = ArchiveManager.archive.ground_archive()
|
||||
tried_times = ground_archive.get_value(name, "tried_times", 0)
|
||||
|
||||
|
||||
func _on_interacted() -> void:
|
||||
if not texture_cover:
|
||||
push_error("entity/inspectable.gd: texture_cover or texture_note is not set")
|
||||
return
|
||||
if inspecting:
|
||||
return
|
||||
tried_times += 1
|
||||
%Sfx.play()
|
||||
# connect inspector quit signal
|
||||
var inspector = SceneManager.get_inspector()
|
||||
if inspector:
|
||||
inspector.quit_and_hidden.connect(_on_quit_inspector)
|
||||
var inspection_note = _get_tr_content()
|
||||
inspector.pop_standard_inspection(
|
||||
texture_cover, texture_note, inspection_note, note_centered
|
||||
)
|
||||
inspecting = true
|
||||
sign_mark.display_sign = false
|
||||
if content_centered:
|
||||
content_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||
# sign_mark.interacted.connect(_on_interacted)
|
||||
sign_snapper.arrived.connect(_on_interacted)
|
||||
sign_mark.cancel.connect(_on_cancel)
|
||||
|
||||
|
||||
func _get_tr_content():
|
||||
@ -82,26 +109,85 @@ func _get_tr_content():
|
||||
return inspection_note
|
||||
|
||||
|
||||
func _on_quit_inspector():
|
||||
var inspector = SceneManager.get_inspector()
|
||||
if inspector:
|
||||
# disconnect inspector quit signal
|
||||
inspector.quit_and_hidden.disconnect(_on_quit_inspector)
|
||||
inspecting = false
|
||||
sign_mark.display_sign = true
|
||||
func _on_interacted() -> void:
|
||||
if STATUS_TRANSITIONING == status:
|
||||
return
|
||||
if status == STATUS_NORAML:
|
||||
tried_times += 1
|
||||
sfx.play()
|
||||
SceneManager.focus_node(self)
|
||||
SceneManager.get_camera_marker().tween_zoom(2.0)
|
||||
status = STATUS_TRANSITIONING
|
||||
var tween = create_tween()
|
||||
tween.tween_interval(0.8)
|
||||
tween.tween_property(container, "modulate:a", 1.0, 0.7)
|
||||
tween.tween_callback(func(): status = STATUS_INSPECTING_COVER)
|
||||
# 改变信号源
|
||||
sign_mark.interacted.connect(_on_interacted)
|
||||
sign_snapper.arrived.disconnect(_on_interacted)
|
||||
sign_mark.display_sign = false
|
||||
|
||||
SceneManager.freeze_player(0.0, action_key)
|
||||
cover_rect.texture = texture_cover
|
||||
if content_key == "":
|
||||
tip_label.text = tip_cover_without_notes
|
||||
else:
|
||||
tip_label.text = tip_cover_hide_notes
|
||||
_blink_label(true)
|
||||
start_inspecting.emit()
|
||||
elif status == STATUS_INSPECTING_COVER:
|
||||
sfx.play()
|
||||
status = STATUS_INSPECTING_NOTES
|
||||
tip_label.text = tip_notes
|
||||
create_tween().tween_property(content_label, "modulate:a", 1.0, 0.15)
|
||||
elif status == STATUS_INSPECTING_NOTES:
|
||||
sfx.play()
|
||||
status = STATUS_INSPECTING_COVER
|
||||
if content_key == "":
|
||||
tip_label.text = tip_cover_without_notes
|
||||
else:
|
||||
tip_label.text = tip_cover_hide_notes
|
||||
create_tween().tween_property(content_label, "modulate:a", 0.0, 0.15)
|
||||
|
||||
|
||||
func _blink_label(init := true):
|
||||
if status == STATUS_NORAML:
|
||||
return
|
||||
blinking_tween = create_tween()
|
||||
if init:
|
||||
blinking_tween.tween_property(tip_label, "modulate:a", 0.8, 2.0)
|
||||
blinking_tween.tween_callback(_blink_label.bind(false))
|
||||
else:
|
||||
blinking_tween.tween_property(tip_label, "modulate:a", 0.5, 1.0)
|
||||
blinking_tween.tween_callback(_blink_label.bind(true))
|
||||
|
||||
|
||||
func _on_cancel(_body = null):
|
||||
inspecting = false
|
||||
|
||||
|
||||
func _reset(_body):
|
||||
inspecting = false
|
||||
if STATUS_TRANSITIONING == status:
|
||||
return
|
||||
if status != STATUS_NORAML:
|
||||
quit_inspecting.emit()
|
||||
status = STATUS_TRANSITIONING
|
||||
var tween = create_tween()
|
||||
tween.tween_property(container, "modulate:a", 0.0, 0.15)
|
||||
if blinking_tween and blinking_tween.is_running():
|
||||
blinking_tween.kill()
|
||||
tween.parallel().tween_property(tip_label, "modulate:a", 0.0, 0.15)
|
||||
tween.tween_interval(1.0)
|
||||
tween.tween_callback(func(): status = STATUS_NORAML)
|
||||
tween.tween_callback(func(): content_label.modulate.a = 0.0)
|
||||
SceneManager.focus_player_and_reset_zoom()
|
||||
SceneManager.release_player()
|
||||
sign_mark.display_sign = true
|
||||
# 改变信号源
|
||||
sign_mark.interacted.disconnect(_on_interacted)
|
||||
sign_snapper.arrived.connect(_on_interacted)
|
||||
|
||||
|
||||
func _set(property: StringName, value: Variant) -> bool:
|
||||
if property == "content_key":
|
||||
content_key = value
|
||||
content_label.text = _get_tr_content()
|
||||
return true
|
||||
return false
|
||||
|
||||
|
@ -1 +1 @@
|
||||
uid://ctd1xlvqdcsg4
|
||||
uid://cihyb26hjma4i
|
||||
|
@ -1,28 +1,33 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://wyj4qdjyn4ql"]
|
||||
[gd_scene load_steps=12 format=3 uid="uid://ci5anaxsa1apl"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://ctd1xlvqdcsg4" path="res://scene/entity/inspectable.gd" id="1_0pc4s"]
|
||||
[ext_resource type="Texture2D" uid="uid://c0rw25jl762a1" path="res://asset/art/ui/action_mark/UI眼睛.png" id="2_ossmq"]
|
||||
[ext_resource type="AudioStream" uid="uid://dky3j8lwcy5sk" path="res://asset/audio/sfx/UI/物品查看.mp3" id="3_kilnm"]
|
||||
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="3_p1g2a"]
|
||||
[ext_resource type="Texture2D" uid="uid://bei1s1uucktso" path="res://asset/art/tool/neutral_point_light.webp" id="3_vbivp"]
|
||||
[ext_resource type="PackedScene" uid="uid://c4tipnj1cr1j3" path="res://scene/entity/ux/sign.tscn" id="4_1yty8"]
|
||||
[ext_resource type="Script" uid="uid://cihyb26hjma4i" path="res://scene/entity/inspectable.gd" id="1_85el0"]
|
||||
[ext_resource type="Texture2D" uid="uid://c0rw25jl762a1" path="res://asset/art/ui/action_mark/UI眼睛.png" id="2_3pauf"]
|
||||
[ext_resource type="AudioStream" uid="uid://byjcmxy5crce5" path="res://asset/audio/sfx/UI/纸条.mp3" id="3_3ldx7"]
|
||||
[ext_resource type="Texture2D" uid="uid://bei1s1uucktso" path="res://asset/art/tool/neutral_point_light.webp" id="3_o562w"]
|
||||
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="3_q18ff"]
|
||||
[ext_resource type="PackedScene" uid="uid://c4tipnj1cr1j3" path="res://scene/entity/ux/sign.tscn" id="4_do8tr"]
|
||||
[ext_resource type="Texture2D" uid="uid://dwgxa5j6602vv" path="res://asset/art/ui/prop/inspect文本衬底蒙版.png" id="6_q18ff"]
|
||||
[ext_resource type="FontVariation" uid="uid://1ryw42kej6lv" path="res://config/font_ui.tres" id="7_ianbs"]
|
||||
[ext_resource type="Texture2D" uid="uid://f186lvt5y2ql" path="res://asset/art/ui/prop/inspect背景遮罩.png" id="7_xawjo"]
|
||||
[ext_resource type="Script" uid="uid://cnt01hiw52bmn" path="res://scene/entity/ux/sign_snapper.gd" id="10_mtbvd"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_4fuic"]
|
||||
resource_local_to_scene = true
|
||||
size = Vector2(35, 70)
|
||||
size = Vector2(25, 70)
|
||||
|
||||
[node name="Inspectable" type="Sprite2D"]
|
||||
script = ExtResource("1_0pc4s")
|
||||
note_sign_texture = ExtResource("2_ossmq")
|
||||
[node name="LocalInspectable" type="Sprite2D"]
|
||||
script = ExtResource("1_85el0")
|
||||
collision_width_and_x = Vector2(25, 0)
|
||||
note_sign_texture = ExtResource("2_3pauf")
|
||||
content_key = ""
|
||||
|
||||
[node name="Sfx" type="AudioStreamPlayer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
stream = ExtResource("3_kilnm")
|
||||
stream = ExtResource("3_3ldx7")
|
||||
bus = &"game_sfx"
|
||||
script = ExtResource("3_p1g2a")
|
||||
script = ExtResource("3_q18ff")
|
||||
|
||||
[node name="Sign" parent="." instance=ExtResource("4_1yty8")]
|
||||
[node name="Sign" parent="." instance=ExtResource("4_do8tr")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="PointLight2D" type="PointLight2D" parent="."]
|
||||
@ -30,7 +35,7 @@ unique_name_in_owner = true
|
||||
position = Vector2(0, -35)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
energy = 0.0
|
||||
texture = ExtResource("3_vbivp")
|
||||
texture = ExtResource("3_o562w")
|
||||
texture_scale = 0.5
|
||||
|
||||
[node name="Area2D" type="Area2D" parent="."]
|
||||
@ -40,3 +45,93 @@ collision_layer = 0
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
|
||||
unique_name_in_owner = true
|
||||
shape = SubResource("RectangleShape2D_4fuic")
|
||||
|
||||
[node name="InspectLayer" type="CanvasLayer" parent="."]
|
||||
layer = 20
|
||||
|
||||
[node name="Root" type="Control" parent="InspectLayer"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="Container" type="MarginContainer" parent="InspectLayer/Root"]
|
||||
unique_name_in_owner = true
|
||||
modulate = Color(1, 1, 1, 0)
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="BGMask" type="TextureRect" parent="InspectLayer/Root/Container"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
mouse_filter = 2
|
||||
texture = ExtResource("7_xawjo")
|
||||
|
||||
[node name="Cover" type="TextureRect" parent="InspectLayer/Root/Container"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="ContentLabel" type="Label" parent="InspectLayer/Root/Container"]
|
||||
unique_name_in_owner = true
|
||||
modulate = Color(1, 1, 1, 0)
|
||||
z_index = 100
|
||||
custom_minimum_size = Vector2(130, 0)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
vertical_alignment = 1
|
||||
autowrap_mode = 3
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="InspectLayer/Root/Container/ContentLabel"]
|
||||
self_modulate = Color(1, 1, 1, 0.733333)
|
||||
show_behind_parent = true
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
texture = ExtResource("6_q18ff")
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="InspectLayer/Root"]
|
||||
layout_mode = 2
|
||||
offset_top = 263.0
|
||||
offset_right = 564.0
|
||||
offset_bottom = 316.0
|
||||
size_flags_vertical = 8
|
||||
mouse_filter = 2
|
||||
theme_override_constants/margin_bottom = 38
|
||||
|
||||
[node name="TipLabel" type="Label" parent="InspectLayer/Root/MarginContainer"]
|
||||
unique_name_in_owner = true
|
||||
modulate = Color(1, 1, 1, 0)
|
||||
z_index = 100
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 8
|
||||
theme_override_fonts/font = ExtResource("7_ianbs")
|
||||
text = "Q: 退出 E: 阅读"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="SignSnapper" type="Marker2D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("10_mtbvd")
|
||||
release_player_on_arrived = false
|
||||
radius = 3.0
|
||||
delay_arrived = 0.1
|
||||
action_on_arrived = 4
|
||||
delay_after_action = 0.4
|
||||
metadata/_custom_type_script = "uid://cnt01hiw52bmn"
|
||||
|
@ -19,6 +19,14 @@ signal sign_mark_offset_updated
|
||||
enabled = val
|
||||
if is_node_ready():
|
||||
_check_sign_display()
|
||||
@export var enable_snapper := true
|
||||
@export var collision_width_and_x := Vector2(20.0, 0):
|
||||
set(val):
|
||||
collision_width_and_x = val
|
||||
if is_node_ready():
|
||||
var shape = area2d.get_node("CollisionShape2D").shape
|
||||
shape.size.x = collision_width_and_x.x
|
||||
area2d.position.x = collision_width_and_x.y
|
||||
@export var unrevealed_sign_texture: Texture2D
|
||||
@export var unmatched_sign_texture: Texture2D
|
||||
@export var matched_sign_texture: Texture2D
|
||||
@ -36,6 +44,7 @@ var prop_key3 := ""
|
||||
@onready var sfx_invalid = $SfxInvalid as Sfx
|
||||
@onready var sfx_success = $SfxSuccess as Sfx
|
||||
@onready var sign_mark = %Sign as Sign
|
||||
@onready var sign_snapper = %SignSnapper as SignSnapper
|
||||
@onready var area2d = %Area2D as Area2D
|
||||
|
||||
var ground_archive: GroundArchive
|
||||
@ -54,11 +63,18 @@ static var item_config_res = preload("res://asset/dialogue/item_description.dial
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
var shape = area2d.get_node("CollisionShape2D").shape
|
||||
shape.size.x = collision_width_and_x.x
|
||||
area2d.position.x = collision_width_and_x.y
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
area2d.body_entered.connect(_reset)
|
||||
area2d.body_exited.connect(_on_cancel)
|
||||
sign_mark.interacted.connect(_on_interacted)
|
||||
if enable_snapper:
|
||||
sign_snapper.arrived.connect(_on_interacted)
|
||||
else:
|
||||
sign_snapper.enabled = false
|
||||
sign_mark.interacted.connect(_on_interacted)
|
||||
sign_mark.cancel.connect(_on_cancel)
|
||||
sign_mark.enabled = enabled
|
||||
# setup default value
|
||||
|
@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=10 format=3 uid="uid://cw3q5pvciumil"]
|
||||
[gd_scene load_steps=11 format=3 uid="uid://cw3q5pvciumil"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dxyaip4khrkkq" path="res://scene/entity/interactable.gd" id="1_6nrd3"]
|
||||
[ext_resource type="Texture2D" uid="uid://dtyg0nugb2tnf" path="res://asset/art/ui/action_mark/UI探索.png" id="2_03eog"]
|
||||
@ -8,10 +8,11 @@
|
||||
[ext_resource type="Texture2D" uid="uid://gui0ubwlwoi0" path="res://asset/art/ui/action_mark/UI手.png" id="4_njk43"]
|
||||
[ext_resource type="AudioStream" uid="uid://ccng5y2fip6mc" path="res://asset/audio/sfx/UI/开锁声.mp3" id="5_exp6m"]
|
||||
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="6_l2kr5"]
|
||||
[ext_resource type="Script" uid="uid://cnt01hiw52bmn" path="res://scene/entity/ux/sign_snapper.gd" id="9_03eog"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_8d3b4"]
|
||||
resource_local_to_scene = true
|
||||
size = Vector2(10, 70)
|
||||
size = Vector2(20, 70)
|
||||
|
||||
[node name="Interactable" type="Sprite2D"]
|
||||
script = ExtResource("1_6nrd3")
|
||||
@ -44,3 +45,12 @@ collision_layer = 0
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
|
||||
unique_name_in_owner = true
|
||||
shape = SubResource("RectangleShape2D_8d3b4")
|
||||
|
||||
[node name="SignSnapper" type="Marker2D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("9_03eog")
|
||||
radius = 4.0
|
||||
delay_arrived = 0.1
|
||||
action_on_arrived = 4
|
||||
delay_after_action = 0.4
|
||||
metadata/_custom_type_script = "uid://cnt01hiw52bmn"
|
||||
|
@ -1,206 +0,0 @@
|
||||
@tool
|
||||
extends Sprite2D
|
||||
|
||||
signal start_inspecting
|
||||
signal quit_inspecting
|
||||
signal sign_mark_offset_updated
|
||||
|
||||
# @export var entity_config: EntityConfig:
|
||||
# set(value):
|
||||
# entity_config = value
|
||||
|
||||
enum { STATUS_NORAML, STATUS_TRANSITIONING, STATUS_INSPECTING_COVER, STATUS_INSPECTING_NOTES }
|
||||
|
||||
@export var enabled := true:
|
||||
set(val):
|
||||
enabled = val
|
||||
if is_node_ready() and not Engine.is_editor_hint():
|
||||
sign_mark.enabled = val
|
||||
# sign_mark 节点在 ready 时会直接读取
|
||||
@export var sign_mark_offset := Vector2.ZERO:
|
||||
set(val):
|
||||
sign_mark_offset = val
|
||||
sign_mark_offset_updated.emit(val)
|
||||
# @export var entity_name: String = ""
|
||||
@export var content_centered: bool = false
|
||||
@export var action_key := 4
|
||||
@export var texture_cover: Texture2D
|
||||
@export var note_sign_texture: Texture2D
|
||||
@export_enum("none", "c01", "c02", "c03", "c04", "c05", "c06") var editor_filter := "none":
|
||||
set(val):
|
||||
editor_filter = val
|
||||
if is_node_ready() and Engine.is_editor_hint():
|
||||
notify_property_list_changed()
|
||||
var content_key: String = ""
|
||||
|
||||
@onready var sign_mark = %Sign as Sign
|
||||
@onready var sign_snapper = %SignSnapper as SignSnapper
|
||||
@onready var area2d = %Area2D as Area2D
|
||||
|
||||
@onready var sfx = %Sfx
|
||||
@onready var container = %Container
|
||||
@onready var cover_rect = %Cover as TextureRect
|
||||
@onready var content_label = %ContentLabel as Label
|
||||
@onready var tip_label = %TipLabel as Label
|
||||
|
||||
var tip_cover_hide_notes = "Q: " + tr("ui_退出") + " " + "E: " + tr("ui_阅读")
|
||||
var tip_cover_without_notes = "Q: " + tr("ui_退出") + " " + "E: " + tr("ui_检阅")
|
||||
var tip_notes = "Q: " + tr("ui_退出") + " " + "E: " + tr("ui_收起")
|
||||
|
||||
static var content_dialogue = (
|
||||
preload("res://asset/dialogue/inspect_content.dialogue") as DialogueResource
|
||||
)
|
||||
|
||||
var status := STATUS_NORAML
|
||||
var blinking_tween: Tween
|
||||
|
||||
var ground_archive: GroundArchive
|
||||
# 尝试互动的次数
|
||||
var tried_times: int:
|
||||
set(val):
|
||||
tried_times = val
|
||||
ground_archive.set_pair(name, "tried_times", val)
|
||||
if tried_times >= 1 and sign_mark:
|
||||
sign_mark.sprite2d.texture = note_sign_texture
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
$InspectLayer.layer = GlobalConfig.CANVAS_LAYER_PROP_INSPECTOR
|
||||
container.modulate.a = 0.0
|
||||
content_label.modulate.a = 0.0
|
||||
content_label.text = _get_tr_content()
|
||||
tip_label.text = tip_cover_hide_notes
|
||||
cover_rect.texture = texture_cover
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
sign_mark.enabled = enabled
|
||||
# setup default value
|
||||
ground_archive = ArchiveManager.archive.ground_archive()
|
||||
tried_times = ground_archive.get_value(name, "tried_times", 0)
|
||||
|
||||
if content_centered:
|
||||
content_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||
# sign_mark.interacted.connect(_on_interacted)
|
||||
sign_snapper.arrived.connect(_on_interacted)
|
||||
sign_mark.cancel.connect(_on_cancel)
|
||||
|
||||
|
||||
func _get_tr_content():
|
||||
if content_key == "":
|
||||
return ""
|
||||
var inspection_note = ""
|
||||
# get note content
|
||||
var line_id = content_dialogue.titles.get(content_key)
|
||||
while line_id and line_id != "end":
|
||||
var line = content_dialogue.lines[line_id]
|
||||
if line.has("text"):
|
||||
inspection_note += tr(line.get("text")) + "\n"
|
||||
line_id = line.get("next_id")
|
||||
return inspection_note
|
||||
|
||||
|
||||
func _on_interacted() -> void:
|
||||
if STATUS_TRANSITIONING == status:
|
||||
return
|
||||
if status == STATUS_NORAML:
|
||||
tried_times += 1
|
||||
sfx.play()
|
||||
SceneManager.focus_node(self)
|
||||
SceneManager.get_camera_marker().tween_zoom(2.0)
|
||||
status = STATUS_TRANSITIONING
|
||||
var tween = create_tween()
|
||||
tween.tween_interval(0.8)
|
||||
tween.tween_property(container, "modulate:a", 1.0, 0.7)
|
||||
tween.tween_callback(func(): status = STATUS_INSPECTING_COVER)
|
||||
sign_mark.display_sign = false
|
||||
SceneManager.freeze_player(0.0, action_key)
|
||||
cover_rect.texture = texture_cover
|
||||
if content_key == "":
|
||||
tip_label.text = tip_cover_without_notes
|
||||
else:
|
||||
tip_label.text = tip_cover_hide_notes
|
||||
_blink_label(true)
|
||||
start_inspecting.emit()
|
||||
elif status == STATUS_INSPECTING_COVER:
|
||||
sfx.play()
|
||||
status = STATUS_INSPECTING_NOTES
|
||||
tip_label.text = tip_notes
|
||||
create_tween().tween_property(content_label, "modulate:a", 1.0, 0.15)
|
||||
elif status == STATUS_INSPECTING_NOTES:
|
||||
sfx.play()
|
||||
status = STATUS_INSPECTING_COVER
|
||||
if content_key == "":
|
||||
tip_label.text = tip_cover_without_notes
|
||||
else:
|
||||
tip_label.text = tip_cover_hide_notes
|
||||
create_tween().tween_property(content_label, "modulate:a", 0.0, 0.15)
|
||||
|
||||
|
||||
func _blink_label(init := true):
|
||||
if status == STATUS_NORAML:
|
||||
return
|
||||
blinking_tween = create_tween()
|
||||
if init:
|
||||
blinking_tween.tween_property(tip_label, "modulate:a", 0.8, 2.0)
|
||||
blinking_tween.tween_callback(_blink_label.bind(false))
|
||||
else:
|
||||
blinking_tween.tween_property(tip_label, "modulate:a", 0.5, 1.0)
|
||||
blinking_tween.tween_callback(_blink_label.bind(true))
|
||||
|
||||
|
||||
func _on_cancel(_body = null):
|
||||
if STATUS_TRANSITIONING == status:
|
||||
return
|
||||
if status != STATUS_NORAML:
|
||||
quit_inspecting.emit()
|
||||
status = STATUS_TRANSITIONING
|
||||
var tween = create_tween()
|
||||
tween.tween_property(container, "modulate:a", 0.0, 0.15)
|
||||
if blinking_tween and blinking_tween.is_running():
|
||||
blinking_tween.kill()
|
||||
tween.parallel().tween_property(tip_label, "modulate:a", 0.0, 0.15)
|
||||
tween.tween_interval(1.0)
|
||||
tween.tween_callback(func(): status = STATUS_NORAML)
|
||||
tween.tween_callback(func(): content_label.modulate.a = 0.0)
|
||||
SceneManager.focus_player_and_reset_zoom()
|
||||
SceneManager.release_player()
|
||||
sign_mark.display_sign = true
|
||||
|
||||
|
||||
func _set(property: StringName, value: Variant) -> bool:
|
||||
if property == "content_key":
|
||||
content_key = value
|
||||
content_label.text = _get_tr_content()
|
||||
return true
|
||||
return false
|
||||
|
||||
|
||||
func _get(property: StringName) -> Variant:
|
||||
if property == "content_key":
|
||||
return content_key
|
||||
return null
|
||||
|
||||
|
||||
func _get_property_list() -> Array[Dictionary]:
|
||||
var titles = ""
|
||||
# only show notes_ properties in editor
|
||||
if Engine.is_editor_hint():
|
||||
var ordered_titles = content_dialogue.get_ordered_titles()
|
||||
if editor_filter and editor_filter != "none":
|
||||
var filted_titles = ordered_titles.filter(_filter_property)
|
||||
if filted_titles.size() > 0:
|
||||
titles = ",".join(filted_titles)
|
||||
else:
|
||||
titles = ",".join(ordered_titles)
|
||||
return [
|
||||
{
|
||||
"name": "content_key",
|
||||
"type": TYPE_STRING,
|
||||
"hint": PROPERTY_HINT_ENUM_SUGGESTION,
|
||||
"hint_string": titles
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
func _filter_property(property: StringName) -> bool:
|
||||
return property.find(editor_filter) >= 0
|
@ -1 +0,0 @@
|
||||
uid://cihyb26hjma4i
|
@ -1,134 +0,0 @@
|
||||
[gd_scene load_steps=12 format=3 uid="uid://ci5anaxsa1apl"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cihyb26hjma4i" path="res://scene/entity/local_inspectable.gd" id="1_85el0"]
|
||||
[ext_resource type="Texture2D" uid="uid://c0rw25jl762a1" path="res://asset/art/ui/action_mark/UI眼睛.png" id="2_3pauf"]
|
||||
[ext_resource type="AudioStream" uid="uid://byjcmxy5crce5" path="res://asset/audio/sfx/UI/纸条.mp3" id="3_3ldx7"]
|
||||
[ext_resource type="Texture2D" uid="uid://bei1s1uucktso" path="res://asset/art/tool/neutral_point_light.webp" id="3_o562w"]
|
||||
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="3_q18ff"]
|
||||
[ext_resource type="PackedScene" uid="uid://c4tipnj1cr1j3" path="res://scene/entity/ux/sign.tscn" id="4_do8tr"]
|
||||
[ext_resource type="Texture2D" uid="uid://dwgxa5j6602vv" path="res://asset/art/ui/prop/inspect文本衬底蒙版.png" id="6_q18ff"]
|
||||
[ext_resource type="FontVariation" uid="uid://1ryw42kej6lv" path="res://config/font_ui.tres" id="7_ianbs"]
|
||||
[ext_resource type="Texture2D" uid="uid://f186lvt5y2ql" path="res://asset/art/ui/prop/inspect背景遮罩.png" id="7_xawjo"]
|
||||
[ext_resource type="Script" uid="uid://cnt01hiw52bmn" path="res://scene/entity/ux/sign_snapper.gd" id="10_mtbvd"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_4fuic"]
|
||||
resource_local_to_scene = true
|
||||
size = Vector2(30, 70)
|
||||
|
||||
[node name="LocalInspectable" type="Sprite2D"]
|
||||
script = ExtResource("1_85el0")
|
||||
note_sign_texture = ExtResource("2_3pauf")
|
||||
content_key = ""
|
||||
|
||||
[node name="Sfx" type="AudioStreamPlayer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
stream = ExtResource("3_3ldx7")
|
||||
bus = &"game_sfx"
|
||||
script = ExtResource("3_q18ff")
|
||||
|
||||
[node name="Sign" parent="." instance=ExtResource("4_do8tr")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="PointLight2D" type="PointLight2D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
position = Vector2(0, -35)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
energy = 0.0
|
||||
texture = ExtResource("3_o562w")
|
||||
texture_scale = 0.5
|
||||
|
||||
[node name="Area2D" type="Area2D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
collision_layer = 0
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
|
||||
unique_name_in_owner = true
|
||||
shape = SubResource("RectangleShape2D_4fuic")
|
||||
|
||||
[node name="InspectLayer" type="CanvasLayer" parent="."]
|
||||
layer = 20
|
||||
|
||||
[node name="Root" type="Control" parent="InspectLayer"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="Container" type="MarginContainer" parent="InspectLayer/Root"]
|
||||
unique_name_in_owner = true
|
||||
modulate = Color(1, 1, 1, 0)
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="BGMask" type="TextureRect" parent="InspectLayer/Root/Container"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
mouse_filter = 2
|
||||
texture = ExtResource("7_xawjo")
|
||||
|
||||
[node name="Cover" type="TextureRect" parent="InspectLayer/Root/Container"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="ContentLabel" type="Label" parent="InspectLayer/Root/Container"]
|
||||
unique_name_in_owner = true
|
||||
modulate = Color(1, 1, 1, 0)
|
||||
z_index = 100
|
||||
custom_minimum_size = Vector2(130, 0)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
vertical_alignment = 1
|
||||
autowrap_mode = 3
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="InspectLayer/Root/Container/ContentLabel"]
|
||||
self_modulate = Color(1, 1, 1, 0.733333)
|
||||
show_behind_parent = true
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
texture = ExtResource("6_q18ff")
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="InspectLayer/Root"]
|
||||
layout_mode = 2
|
||||
offset_top = 263.0
|
||||
offset_right = 564.0
|
||||
offset_bottom = 316.0
|
||||
size_flags_vertical = 8
|
||||
mouse_filter = 2
|
||||
theme_override_constants/margin_bottom = 38
|
||||
|
||||
[node name="TipLabel" type="Label" parent="InspectLayer/Root/MarginContainer"]
|
||||
unique_name_in_owner = true
|
||||
modulate = Color(1, 1, 1, 0)
|
||||
z_index = 100
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 8
|
||||
theme_override_fonts/font = ExtResource("7_ianbs")
|
||||
text = "Q: 退出 E: 阅读"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="SignSnapper" type="Marker2D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("10_mtbvd")
|
||||
release_player_on_arrived = false
|
||||
radius = 3.0
|
||||
delay_arrived = 0.2
|
||||
metadata/_custom_type_script = "uid://cnt01hiw52bmn"
|
@ -14,6 +14,13 @@ signal sign_mark_offset_updated
|
||||
enabled = val
|
||||
if is_node_ready():
|
||||
sign_mark.enabled = val
|
||||
@export var collision_width_and_x := Vector2(20.0, 0):
|
||||
set(val):
|
||||
collision_width_and_x = val
|
||||
if is_node_ready():
|
||||
var shape = area2d.get_node("CollisionShape2D").shape
|
||||
shape.size.x = collision_width_and_x.x
|
||||
area2d.position.x = collision_width_and_x.y
|
||||
@export var action := 4 #3为none; 4为lookup_wall; 之后为其他动作,请参考 PlayerAnimationConfig
|
||||
@export_enum("os", "ballon") var mode = "os"
|
||||
@export_enum("items", "c01", "c02", "c03", "c04", "c05", "c06") var dialogue := "items":
|
||||
@ -70,6 +77,9 @@ var tried_times: int:
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
var shape = area2d.get_node("CollisionShape2D").shape
|
||||
shape.size.x = collision_width_and_x.x
|
||||
area2d.position.x = collision_width_and_x.y
|
||||
if Engine.is_editor_hint():
|
||||
notify_property_list_changed()
|
||||
return
|
||||
|
@ -3,6 +3,9 @@ class_name Npc2D extends AnimatedSprite2D
|
||||
|
||||
signal interacted
|
||||
|
||||
# <0 means no walk to edge
|
||||
@export var walk_to_edge_width := 25.0
|
||||
@export var action_key := 4
|
||||
@export var enabled := true:
|
||||
set(val):
|
||||
enabled = val
|
||||
@ -13,10 +16,17 @@ signal interacted
|
||||
height = val
|
||||
if is_node_ready():
|
||||
speaking_sign.position.y = -height
|
||||
|
||||
@export var collision_width_and_x := Vector2(20.0, 0):
|
||||
set(val):
|
||||
collision_width_and_x = val
|
||||
if is_node_ready():
|
||||
var shape = area2d.get_node("CollisionShape2D").shape
|
||||
shape.size.x = collision_width_and_x.x
|
||||
area2d.position.x = collision_width_and_x.y
|
||||
@onready var speaking_animation = %SpeakingAnimationPlayer
|
||||
@onready var speaking_sign = %SpeakingSign2D as Node2D
|
||||
@onready var sign_mark = %Sign as Sign
|
||||
@onready var sign_snapper = %SignSnapper as SignSnapper
|
||||
@onready var area2d = %Area2D as Area2D
|
||||
|
||||
var dialogue_title := ""
|
||||
@ -25,8 +35,13 @@ var dialogue_res = preload("res://asset/dialogue/npc.dialogue")
|
||||
var base_scale := Vector2.ONE
|
||||
var base_mod := Color.WHITE_SMOKE
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
speaking_sign.position.y = -height
|
||||
var shape = area2d.get_node("CollisionShape2D").shape
|
||||
shape.size.x = collision_width_and_x.x
|
||||
area2d.position.x = collision_width_and_x.y
|
||||
sign_snapper.action_on_arrived = action_key
|
||||
if Engine.is_editor_hint():
|
||||
# editor 直接展示
|
||||
speaking_sign.visible = true
|
||||
@ -38,7 +53,12 @@ func _ready() -> void:
|
||||
base_mod = speaking_sign.modulate
|
||||
area2d.body_entered.connect(_on_entered)
|
||||
area2d.body_exited.connect(_on_exited)
|
||||
sign_mark.interacted.connect(_on_interacted)
|
||||
if walk_to_edge_width >= 0:
|
||||
sign_snapper.radius = walk_to_edge_width
|
||||
sign_snapper.arrived.connect(_on_interacted)
|
||||
else:
|
||||
sign_snapper.enabled = false
|
||||
sign_mark.interacted.connect(_on_interacted)
|
||||
# sign_mark.cancel.connect(_stop_speaking)
|
||||
sign_mark.toggle_active.connect(_on_toggle_active)
|
||||
_check_sign_mark_enable()
|
||||
@ -55,10 +75,12 @@ func _check_sign_mark_enable():
|
||||
speaking_sign.visible = enabled
|
||||
sign_mark.enabled = enabled and visible
|
||||
|
||||
|
||||
func _on_entered(_body = null) -> void:
|
||||
var tween = create_tween()
|
||||
tween.tween_property(speaking_sign, "modulate:a", 1.0, 0.5)
|
||||
|
||||
|
||||
func _on_exited(_body = null) -> void:
|
||||
var tween = create_tween()
|
||||
tween.tween_property(speaking_sign, "modulate:a", 0.0, 0.5)
|
||||
@ -70,8 +92,10 @@ func _on_toggle_active(activated: bool) -> void:
|
||||
else:
|
||||
_stop_speaking()
|
||||
|
||||
|
||||
var speaking := false
|
||||
|
||||
|
||||
func _on_interacted() -> void:
|
||||
if speaking:
|
||||
return
|
||||
|
@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=15 format=3 uid="uid://0sofmhrl358m"]
|
||||
[gd_scene load_steps=16 format=3 uid="uid://0sofmhrl358m"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cqd5dqafxnwl1" path="res://scene/entity/npc.gd" id="1_jegr2"]
|
||||
[ext_resource type="AudioStream" uid="uid://cvttds81trcoc" path="res://asset/audio/sfx/UI/click.wav" id="3_7lwt5"]
|
||||
@ -7,6 +7,7 @@
|
||||
[ext_resource type="Texture2D" uid="uid://bwt5nxyncfuqu" path="res://asset/art/ui/action_mark/说话标识1.png" id="5_foitt"]
|
||||
[ext_resource type="Texture2D" uid="uid://8bnn3s72o87y" path="res://asset/art/ui/action_mark/说话标识2.png" id="6_2n6ge"]
|
||||
[ext_resource type="Texture2D" uid="uid://by0rbde26tyn5" path="res://asset/art/ui/action_mark/说话标识3.png" id="7_afjxr"]
|
||||
[ext_resource type="Script" uid="uid://cnt01hiw52bmn" path="res://scene/entity/ux/sign_snapper.gd" id="8_7lwt5"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_soodi"]
|
||||
length = 0.001
|
||||
@ -122,11 +123,12 @@ animations = [{
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_4fuic"]
|
||||
resource_local_to_scene = true
|
||||
size = Vector2(30, 100)
|
||||
size = Vector2(25, 100)
|
||||
|
||||
[node name="Npc" type="AnimatedSprite2D"]
|
||||
light_mask = 5
|
||||
script = ExtResource("1_jegr2")
|
||||
collision_width_and_x = Vector2(25, 0)
|
||||
dialogue_title = ""
|
||||
|
||||
[node name="Sfx" type="AudioStreamPlayer" parent="."]
|
||||
@ -174,3 +176,14 @@ collision_layer = 0
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
|
||||
unique_name_in_owner = true
|
||||
shape = SubResource("RectangleShape2D_4fuic")
|
||||
|
||||
[node name="SignSnapper" type="Marker2D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("8_7lwt5")
|
||||
release_player_on_arrived = false
|
||||
radius = 20.0
|
||||
walk_to_edge = true
|
||||
delay_arrived = 0.1
|
||||
action_on_arrived = 4
|
||||
delay_after_action = 0.4
|
||||
metadata/_custom_type_script = "uid://cnt01hiw52bmn"
|
||||
|
@ -17,12 +17,20 @@ signal sign_mark_offset_updated
|
||||
_check_sign_display()
|
||||
# 除了 picked 必然隐藏,其他情况下跟随 enabled 状态
|
||||
@export var visible_follow_enabled := true
|
||||
@export var collision_width_and_x := Vector2(20.0, 0):
|
||||
set(val):
|
||||
collision_width_and_x = val
|
||||
if is_node_ready():
|
||||
var shape = area2d.get_node("CollisionShape2D").shape
|
||||
shape.size.x = collision_width_and_x.x
|
||||
area2d.position.x = collision_width_and_x.y
|
||||
|
||||
var prop_key := ""
|
||||
|
||||
@onready var sfx = $Sfx as Sfx
|
||||
@onready var sign_mark := %Sign as Sign
|
||||
@onready var area := %Area2D as Area2D
|
||||
@onready var sign_snapper = %SignSnapper as SignSnapper
|
||||
@onready var area2d := %Area2D as Area2D
|
||||
var ground_archive: GroundArchive
|
||||
var picked: bool:
|
||||
set(val):
|
||||
@ -47,6 +55,9 @@ func enable_with_ease(duration := 1.0):
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
var shape = area2d.get_node("CollisionShape2D").shape
|
||||
shape.size.x = collision_width_and_x.x
|
||||
area2d.position.x = collision_width_and_x.y
|
||||
if Engine.is_editor_hint():
|
||||
var animation_player = _get_animation_player()
|
||||
# 更新 hook_animation 的可选项
|
||||
@ -61,7 +72,7 @@ func _ready() -> void:
|
||||
if picked:
|
||||
if GlobalConfig.DEBUG:
|
||||
print("Prop has picked, name=", name, " key=", prop_key)
|
||||
sign_mark.interacted.connect(_interacted)
|
||||
sign_snapper.arrived.connect(_interacted)
|
||||
|
||||
|
||||
func _check_sign_display():
|
||||
|
@ -1,14 +1,15 @@
|
||||
[gd_scene load_steps=7 format=3 uid="uid://dsa6frlw6e6gg"]
|
||||
[gd_scene load_steps=8 format=3 uid="uid://dsa6frlw6e6gg"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cd3tb2he77vv4" path="res://scene/entity/pickable.gd" id="1_jk1u0"]
|
||||
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="3_1h8r3"]
|
||||
[ext_resource type="AudioStream" uid="uid://dutk2d7nilv3m" path="res://asset/audio/sfx/UI/令牌道具获取.wav" id="3_dxdbj"]
|
||||
[ext_resource type="PackedScene" uid="uid://c4tipnj1cr1j3" path="res://scene/entity/ux/sign.tscn" id="4_44f4h"]
|
||||
[ext_resource type="Texture2D" uid="uid://bei1s1uucktso" path="res://asset/art/tool/neutral_point_light.webp" id="5_yhysn"]
|
||||
[ext_resource type="Script" uid="uid://cnt01hiw52bmn" path="res://scene/entity/ux/sign_snapper.gd" id="6_4qt5l"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_k6och"]
|
||||
resource_local_to_scene = true
|
||||
size = Vector2(10, 60)
|
||||
size = Vector2(20, 60)
|
||||
|
||||
[node name="Pickable" type="Sprite2D"]
|
||||
script = ExtResource("1_jk1u0")
|
||||
@ -37,3 +38,12 @@ collision_layer = 0
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
|
||||
shape = SubResource("RectangleShape2D_k6och")
|
||||
|
||||
[node name="SignSnapper" type="Marker2D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("6_4qt5l")
|
||||
radius = 10.0
|
||||
delay_arrived = 0.1
|
||||
action_on_arrived = 4
|
||||
delay_after_action = 0.4
|
||||
metadata/_custom_type_script = "uid://cnt01hiw52bmn"
|
||||
|
@ -9,6 +9,13 @@ signal sign_mark_offset_updated
|
||||
set(val):
|
||||
sign_mark_offset = val
|
||||
sign_mark_offset_updated.emit(val)
|
||||
@export var collision_width_and_x := Vector2(20.0, 0):
|
||||
set(val):
|
||||
collision_width_and_x = val
|
||||
if is_node_ready():
|
||||
var shape = area2d.get_node("CollisionShape2D").shape
|
||||
shape.size.x = collision_width_and_x.x
|
||||
area2d.position.x = collision_width_and_x.y
|
||||
@export_multiline var debug_note: String = ""
|
||||
@export var enabled := true:
|
||||
set(val):
|
||||
@ -58,6 +65,7 @@ var prop_key := ""
|
||||
# 门被锁定,无法打开的音效
|
||||
@onready var sfx_locked = %SfxLocked as Sfx
|
||||
@onready var sign_mark = %Sign as Sign
|
||||
@onready var sign_snapper = %SignSnapper as SignSnapper
|
||||
@onready var area2d = %Area2D as Area2D
|
||||
|
||||
var activated := false
|
||||
@ -76,6 +84,9 @@ var tried_times: int:
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
name = "portal_" + portal_name
|
||||
var shape = area2d.get_node("CollisionShape2D").shape
|
||||
shape.size.x = collision_width_and_x.x
|
||||
area2d.position.x = collision_width_and_x.y
|
||||
if Engine.is_editor_hint():
|
||||
_check_sign_mark_and_texture()
|
||||
_reload_items()
|
||||
@ -88,7 +99,7 @@ func _ready() -> void:
|
||||
_check_sign_mark_and_texture()
|
||||
area2d.body_entered.connect(_reset)
|
||||
area2d.body_exited.connect(_on_cancel)
|
||||
sign_mark.interacted.connect(_on_interacted)
|
||||
sign_snapper.arrived.connect(_on_interacted)
|
||||
sign_mark.cancel.connect(_on_cancel)
|
||||
|
||||
|
||||
@ -107,14 +118,18 @@ func _reload_items() -> void:
|
||||
|
||||
func _check_sign_mark_and_texture():
|
||||
if not is_node_ready():
|
||||
return
|
||||
return
|
||||
# 切换自身 texture
|
||||
if status == "opened" and opened_texture:
|
||||
texture = opened_texture
|
||||
elif default_texture:
|
||||
texture = default_texture
|
||||
# 切换 sign_mark texture, 同时设置 sign_snapper 的 action
|
||||
if status == "default":
|
||||
sign_mark.sprite2d.texture = default_sign_texture
|
||||
sign_snapper.action_on_arrived = 3
|
||||
else:
|
||||
sign_snapper.action_on_arrived = 4
|
||||
# holding 状态下,同样显示 unrevealed_sign_texture
|
||||
if tried_times == 0 or holding:
|
||||
sign_mark.sprite2d.texture = unrevealed_sign_texture
|
||||
@ -124,6 +139,7 @@ func _check_sign_mark_and_texture():
|
||||
sign_mark.sprite2d.texture = locked_sign_texture
|
||||
"opened":
|
||||
sign_mark.sprite2d.texture = opened_sign_texture
|
||||
# 设置 sign_mark 启用状态
|
||||
if target_portal == "none" or not enabled:
|
||||
sign_mark.enabled = false
|
||||
else:
|
||||
|
@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=13 format=3 uid="uid://61pis75a8fdq"]
|
||||
[gd_scene load_steps=14 format=3 uid="uid://61pis75a8fdq"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://b2dvvhawm820r" path="res://scene/entity/portal.gd" id="1_jyh6v"]
|
||||
[ext_resource type="Texture2D" uid="uid://bc4lpa8aao60n" path="res://asset/art/ui/action_mark/传送.png" id="2_ay30q"]
|
||||
@ -11,14 +11,16 @@
|
||||
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="6_bxihn"]
|
||||
[ext_resource type="AudioStream" uid="uid://c1eftumrd4mgw" path="res://asset/audio/sfx/交互/开门.wav" id="6_p48ld"]
|
||||
[ext_resource type="AudioStream" uid="uid://inmdv5gqqius" path="res://asset/audio/sfx/UI/门锁互动.mp3" id="7_bjcty"]
|
||||
[ext_resource type="Script" uid="uid://cnt01hiw52bmn" path="res://scene/entity/ux/sign_snapper.gd" id="12_bxihn"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_munml"]
|
||||
resource_local_to_scene = true
|
||||
size = Vector2(25, 130)
|
||||
size = Vector2(30, 130)
|
||||
|
||||
[node name="portal_left" type="Sprite2D"]
|
||||
script = ExtResource("1_jyh6v")
|
||||
sign_mark_offset = Vector2(0, -50)
|
||||
collision_width_and_x = Vector2(30, 0)
|
||||
unrevealed_sign_texture = ExtResource("2_fr7ak")
|
||||
default_sign_texture = ExtResource("2_bxihn")
|
||||
opened_sign_texture = ExtResource("2_bxihn")
|
||||
@ -68,3 +70,13 @@ unique_name_in_owner = true
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
|
||||
shape = SubResource("RectangleShape2D_munml")
|
||||
|
||||
[node name="SignSnapper" type="Marker2D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("12_bxihn")
|
||||
release_player_on_arrived = false
|
||||
radius = 10.0
|
||||
delay_arrived = 0.1
|
||||
action_on_arrived = 4
|
||||
delay_after_action = 0.4
|
||||
metadata/_custom_type_script = "uid://cnt01hiw52bmn"
|
||||
|
@ -4,13 +4,18 @@ class_name SignSnapper
|
||||
|
||||
signal arrived
|
||||
|
||||
@export var enabled := true
|
||||
@export var release_player_on_arrived := true
|
||||
# 仅使用 x 坐标;否则也用 y 进行 walk to
|
||||
@export var use_x_only := true
|
||||
# x 左右有效范围
|
||||
@export_range(0.0, 20.0, 0.1) var radius := 0.0
|
||||
# 让玩家走到边缘,特别适用于 npc 对话等情景
|
||||
@export var walk_to_edge := false
|
||||
# arrived 延时
|
||||
@export_range(0.0, 10.0, 0.1) var delay_arrived := 0.0
|
||||
@export var action_on_arrived := 3
|
||||
@export_range(0.0, 10.0, 0.1) var delay_after_action := 0.0
|
||||
@export_tool_button("debug 检查玩家触发位置") var debug_check_player_pos = _debug_check_player_pos
|
||||
|
||||
var detacted_sign: Sign
|
||||
@ -31,15 +36,26 @@ func _ready():
|
||||
|
||||
|
||||
func _on_interacted():
|
||||
if not detacted_sign:
|
||||
if not detacted_sign or not enabled:
|
||||
return
|
||||
var player = SceneManager.get_player()
|
||||
var target_pos = global_position
|
||||
if use_x_only:
|
||||
target_pos.y = player.global_position.y
|
||||
var player_x = player.global_position.x
|
||||
if (radius > 0 and absf(target_pos.x - player_x) > radius) or walk_to_edge:
|
||||
# clamp in range
|
||||
if target_pos.x > player_x:
|
||||
target_pos.x -= radius
|
||||
else:
|
||||
target_pos.x += radius
|
||||
var tween = player.walk_to(target_pos, release_player_on_arrived)
|
||||
if delay_arrived > 0:
|
||||
tween.tween_interval(delay_arrived)
|
||||
if action_on_arrived != 3:
|
||||
tween.tween_callback(SceneManager.player_action.bind(action_on_arrived))
|
||||
if delay_after_action > 0:
|
||||
tween.tween_interval(delay_after_action)
|
||||
tween.tween_callback(arrived.emit)
|
||||
|
||||
|
||||
|
@ -717,7 +717,7 @@ default_texture = ExtResource("4_gdhoy")
|
||||
[node name="床" parent="Ground/DeployLayer" index="2" instance=ExtResource("10_18v0g")]
|
||||
position = Vector2(84, 50)
|
||||
texture = ExtResource("7_xakd0")
|
||||
sign_mark_offset = Vector2(0, -17.59)
|
||||
sign_mark_offset = Vector2(0, -17.22)
|
||||
enabled = false
|
||||
title_filter = "c01"
|
||||
note_key = "c01_院长床"
|
||||
@ -725,7 +725,7 @@ note_key = "c01_院长床"
|
||||
[node name="桌椅" parent="Ground/DeployLayer" index="3" instance=ExtResource("10_18v0g")]
|
||||
position = Vector2(155, 45.5094)
|
||||
texture = ExtResource("9_x837o")
|
||||
sign_mark_offset = Vector2(0, -4.6)
|
||||
sign_mark_offset = Vector2(0, -16.45)
|
||||
title_filter = "c01"
|
||||
note_key = "c01_院长书桌"
|
||||
|
||||
@ -738,6 +738,7 @@ note_key = "c01_倾斜的洋相片"
|
||||
|
||||
[node name="座钟" parent="Ground/DeployLayer" index="5" instance=ExtResource("10_18v0g")]
|
||||
position = Vector2(335, 20)
|
||||
sign_mark_offset = Vector2(0, 2.3)
|
||||
title_filter = "c01"
|
||||
note_key = "c01_院长座钟"
|
||||
|
||||
@ -794,7 +795,9 @@ frame = 9
|
||||
[node name="钢琴" parent="Ground/DeployLayer" index="10" instance=ExtResource("14_lq1ou")]
|
||||
position = Vector2(414, 51)
|
||||
texture = ExtResource("8_mnduo")
|
||||
sign_mark_offset = Vector2(0.95, -1.35)
|
||||
sign_mark_offset = Vector2(4.12, -17.54)
|
||||
enable_snapper = false
|
||||
collision_width_and_x = Vector2(49.03, 0)
|
||||
mute_when_interacted = true
|
||||
mute_when_invalid = true
|
||||
one_shot = false
|
||||
|
@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=31 format=3 uid="uid://coiumaaenimbc"]
|
||||
[gd_scene load_steps=32 format=3 uid="uid://coiumaaenimbc"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_1sveo"]
|
||||
[ext_resource type="Script" uid="uid://dcn7u7v3fsscj" path="res://scene/ground/scene/c01/s11_animation.gd" id="2_espm6"]
|
||||
@ -12,6 +12,7 @@
|
||||
[ext_resource type="AudioStream" uid="uid://b8rg7adnnkjll" path="res://asset/audio/BGM/戏曲声.wav" id="6_68ynl"]
|
||||
[ext_resource type="SpriteFrames" uid="uid://bk54qlc8dr5xr" path="res://asset/art/gif/c01_黄包车长场景/c01_黄包车长场景_frames.tres" id="7_wo6md"]
|
||||
[ext_resource type="AudioStream" uid="uid://bi6gm533oqsa" path="res://asset/audio/BGM/街道背景音.wav" id="7_yajus"]
|
||||
[ext_resource type="Texture2D" uid="uid://c7m10rk4cw3lf" path="res://asset/art/scene/c01/s09_黄包车长场景/bg_夜晚黄包车场景.jpg" id="8_yajus"]
|
||||
[ext_resource type="Script" uid="uid://dvmw38syi54l3" path="res://scene/ground/script/c01/s11_路灯序列.gd" id="9_6p5hp"]
|
||||
[ext_resource type="Texture2D" uid="uid://cg1ey0l55acvs" path="res://asset/art/scene/c01/s09_黄包车长场景/e_单个路灯.png" id="9_u6881"]
|
||||
[ext_resource type="Texture2D" uid="uid://cgsq1im2q63f8" path="res://asset/art/scene/c01/s09_黄包车长场景/e_路灯灯芯.png" id="11_2w2ir"]
|
||||
@ -180,9 +181,11 @@ metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
|
||||
|
||||
[node name="BGSprite2D" parent="Ground" index="1"]
|
||||
position = Vector2(-12, 2)
|
||||
offset = Vector2(0, -646)
|
||||
texture = ExtResource("8_yajus")
|
||||
offset = Vector2(-4, -627)
|
||||
|
||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="Ground/BGSprite2D" index="0"]
|
||||
visible = false
|
||||
position = Vector2(-4, -5)
|
||||
sprite_frames = ExtResource("7_wo6md")
|
||||
animation = &"bg_黄包车场景"
|
||||
|
@ -6,7 +6,7 @@
|
||||
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_vc2dw"]
|
||||
[ext_resource type="Texture2D" uid="uid://d05pqud4yoxx3" path="res://asset/art/scene/c02/s01_公寓门口/bg_公寓门口.png" id="5_j2ctx"]
|
||||
[ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="6_bhi7l"]
|
||||
[ext_resource type="PackedScene" uid="uid://ci5anaxsa1apl" path="res://scene/entity/local_inspectable.tscn" id="7_vc2dw"]
|
||||
[ext_resource type="PackedScene" uid="uid://ci5anaxsa1apl" path="res://scene/entity/inspectable.tscn" id="7_vc2dw"]
|
||||
[ext_resource type="Texture2D" uid="uid://qls0yc054048" path="res://asset/art/scene/c02/小蝉寻人启事/e_寻人启事残破.png" id="8_j2ctx"]
|
||||
[ext_resource type="Texture2D" uid="uid://cuyfloebe2mht" path="res://asset/art/scene/c02/小蝉寻人启事/ux_寻人启事残破.png" id="9_bhi7l"]
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
[ext_resource type="Texture2D" uid="uid://bt37pw8hhgsec" path="res://asset/art/prop/c02/海报(小)/剪辫子侦探.png" id="10_jg8g0"]
|
||||
[ext_resource type="PackedScene" uid="uid://cuuej0j8q5ixu" path="res://scene/ground/script/c02/刮海报_过道.tscn" id="11_jg8g0"]
|
||||
[ext_resource type="AudioStream" uid="uid://dq2ndg5yd3rps" path="res://asset/audio/sfx/旧版/c02/出现.mp3" id="11_u68d7"]
|
||||
[ext_resource type="PackedScene" uid="uid://ci5anaxsa1apl" path="res://scene/entity/local_inspectable.tscn" id="12_0fckv"]
|
||||
[ext_resource type="PackedScene" uid="uid://ci5anaxsa1apl" path="res://scene/entity/inspectable.tscn" id="12_0fckv"]
|
||||
[ext_resource type="PackedScene" uid="uid://cw3q5pvciumil" path="res://scene/entity/interactable.tscn" id="13_ck13g"]
|
||||
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="14_jg8g0"]
|
||||
[ext_resource type="Texture2D" uid="uid://cyctvbeqxqvpb" path="res://asset/art/prop/c02/海报特写/青岛啤酒.png" id="16_vqhm5"]
|
||||
@ -122,17 +122,20 @@ position = Vector2(203, -31)
|
||||
sign_mark_offset = Vector2(-1.58, 8.6)
|
||||
content_centered = true
|
||||
texture_cover = ExtResource("7_jg8g0")
|
||||
content_key = "c02_海报1"
|
||||
|
||||
[node name="Closeup刮海报" parent="Ground/DeployLayer" index="6" instance=ExtResource("19_6wwyd")]
|
||||
position = Vector2(253, -31)
|
||||
texture = ExtResource("10_jg8g0")
|
||||
first_interact_os_key = "c02_海报_剪辫子侦探"
|
||||
packed_scene = ExtResource("11_jg8g0")
|
||||
enable_snapper = true
|
||||
|
||||
[node name="青岛啤酒" parent="Ground/DeployLayer" index="7" instance=ExtResource("12_0fckv")]
|
||||
position = Vector2(253, -31)
|
||||
enabled = false
|
||||
texture_cover = ExtResource("16_vqhm5")
|
||||
content_key = "c02_青岛啤酒"
|
||||
|
||||
[node name="鼠疫海报" parent="Ground/DeployLayer" index="8" instance=ExtResource("12_0fckv")]
|
||||
position = Vector2(439, -29)
|
||||
@ -209,10 +212,16 @@ hook_method = "check_if_show_shoes"
|
||||
position = Vector2(122, -15)
|
||||
gaslight_energy = 2.0
|
||||
gaslight_ground_energy = 0.0
|
||||
collision_width_and_x = true
|
||||
one_shot = false
|
||||
one_shot_max_times = true
|
||||
disable_prop_after_interacted = 1
|
||||
interacted_texture = false
|
||||
|
||||
[node name="Closeup八音盒" parent="Ground/DeployLayer" index="17" instance=ExtResource("19_6wwyd")]
|
||||
position = Vector2(533, 65)
|
||||
packed_scene = ExtResource("10_ifae7")
|
||||
enable_snapper = true
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="Ground/DeployLayer/Closeup八音盒"]
|
||||
visible = false
|
||||
|
@ -296,9 +296,9 @@ func run_away():
|
||||
player.visible = false
|
||||
var ambush_xiaochan = burning_layer.get_node("Ambush等待的小蝉")
|
||||
ambush_xiaochan.enabled = false
|
||||
var node = burning_layer.get_node("牵手跑") as Node2D
|
||||
var node = burning_layer.get_node("牵手跑") as Node2D
|
||||
var sprite_together = node.get_node("牵手跑动画") as AnimatedSprite2D
|
||||
sprite_together.visible = true
|
||||
node.visible = true
|
||||
SceneManager.get_camera_marker().focus_node(sprite_together)
|
||||
player.reparent_light(sprite_together)
|
||||
# 牵手动作
|
||||
@ -308,6 +308,7 @@ func run_away():
|
||||
await sprite_together.animation_finished
|
||||
sprite_xiaochan.visible = false
|
||||
sprite_together.play("一起牵手跑步")
|
||||
node.get_node("Sfx2D跑步").play()
|
||||
# 一起跑
|
||||
var tween = create_tween()
|
||||
tween.tween_property(node, "global_position:x", 20.0, 18.0)
|
||||
|
@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=73 format=3 uid="uid://djc2uaefhmu7"]
|
||||
[gd_scene load_steps=78 format=3 uid="uid://djc2uaefhmu7"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_0dylx"]
|
||||
[ext_resource type="Script" uid="uid://dsp5plrdkrsd7" path="res://scene/ground/scene/c02/s03_animation.gd" id="2_dt5aj"]
|
||||
@ -52,6 +52,9 @@
|
||||
[ext_resource type="SpriteFrames" uid="uid://b0icyhxpj16tv" path="res://asset/art/gif/c02_谢幕演出/c02_谢幕演出_frames.tres" id="39_rnk1v"]
|
||||
[ext_resource type="AudioStream" uid="uid://dxoj6vg0wrj0j" path="res://asset/audio/peiyin_new/c02/c02_8小男孩童谣.wav" id="46_qqdxs"]
|
||||
[ext_resource type="Script" uid="uid://cnt01hiw52bmn" path="res://scene/entity/ux/sign_snapper.gd" id="51_vddfx"]
|
||||
[ext_resource type="AudioStream" uid="uid://bxp3f263aaqkp" path="res://asset/audio/sfx/脚步/02_室外_1.wav" id="52_qqdxs"]
|
||||
[ext_resource type="AudioStream" uid="uid://dwa7xdvg5o0i" path="res://asset/audio/sfx/脚步/02_室外_3.wav" id="53_jhod7"]
|
||||
[ext_resource type="AudioStream" uid="uid://d3h0xe0qtai18" path="res://asset/audio/sfx/脚步/02_室外_2.wav" id="54_lq23y"]
|
||||
[ext_resource type="Script" uid="uid://wapo47a1oddf" path="res://scene/entity/audio/sfx2d.gd" id="54_o1qbs"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_rt2lh"]
|
||||
@ -190,7 +193,7 @@ height = 300
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_er6ob"]
|
||||
resource_local_to_scene = true
|
||||
size = Vector2(40, 70)
|
||||
size = Vector2(20, 70)
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_mdix7"]
|
||||
size = Vector2(5, 100)
|
||||
@ -221,10 +224,6 @@ animations = [{
|
||||
"speed": 4.0
|
||||
}]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_2y8cu"]
|
||||
resource_local_to_scene = true
|
||||
size = Vector2(30, 100)
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_bbhbr"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_d7h4s"]
|
||||
@ -236,6 +235,28 @@ size = Vector2(250, 50)
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_vddfx"]
|
||||
size = Vector2(20, 100)
|
||||
|
||||
[sub_resource type="AudioStreamSynchronized" id="AudioStreamSynchronized_qt2qg"]
|
||||
stream_count = 2
|
||||
stream_0/stream = ExtResource("52_qqdxs")
|
||||
stream_0/volume = 0.0
|
||||
stream_1/stream = ExtResource("53_jhod7")
|
||||
stream_1/volume = 0.0
|
||||
|
||||
[sub_resource type="AudioStreamSynchronized" id="AudioStreamSynchronized_2b6vx"]
|
||||
stream_count = 2
|
||||
stream_0/stream = ExtResource("54_lq23y")
|
||||
stream_0/volume = 0.0
|
||||
stream_1/stream = ExtResource("52_qqdxs")
|
||||
stream_1/volume = 0.0
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_fxne6"]
|
||||
playback_mode = 1
|
||||
random_pitch = 2.0
|
||||
random_volume_offset_db = 1.0
|
||||
streams_count = 2
|
||||
stream_0/stream = SubResource("AudioStreamSynchronized_qt2qg")
|
||||
stream_1/stream = SubResource("AudioStreamSynchronized_2b6vx")
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_em2ma"]
|
||||
offsets = PackedFloat32Array(0.00928382, 0.681698, 1)
|
||||
colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0)
|
||||
@ -514,7 +535,11 @@ texture = ExtResource("6_1tart")
|
||||
position = Vector2(290, 1)
|
||||
gaslight_energy = 1.5
|
||||
gaslight_ground_energy = 0.7
|
||||
collision_width_and_x = true
|
||||
mute_when_interacted = false
|
||||
one_shot = false
|
||||
disable_prop_after_interacted = true
|
||||
interacted_texture = false
|
||||
|
||||
[node name="煤油灯2" parent="Ground/DeployLayer" index="17" instance=ExtResource("10_jme4f")]
|
||||
position = Vector2(610, 1)
|
||||
@ -522,7 +547,11 @@ gaslight_texture = ExtResource("11_g0qhj")
|
||||
ground_light_texture = ExtResource("12_ni5ro")
|
||||
gaslight_energy = 1.5
|
||||
gaslight_ground_energy = 0.7
|
||||
collision_width_and_x = true
|
||||
mute_when_interacted = false
|
||||
one_shot = false
|
||||
disable_prop_after_interacted = true
|
||||
interacted_texture = false
|
||||
|
||||
[node name="煤油灯3" parent="Ground/DeployLayer" index="18" instance=ExtResource("10_jme4f")]
|
||||
position = Vector2(857, 1)
|
||||
@ -530,7 +559,11 @@ gaslight_texture = ExtResource("13_hw832")
|
||||
ground_light_texture = ExtResource("14_7pq5y")
|
||||
gaslight_energy = 1.5
|
||||
gaslight_ground_energy = 0.7
|
||||
collision_width_and_x = true
|
||||
mute_when_interacted = false
|
||||
one_shot = false
|
||||
disable_prop_after_interacted = true
|
||||
interacted_texture = false
|
||||
|
||||
[node name="井" type="Sprite2D" parent="Ground/DeployLayer" index="19"]
|
||||
self_modulate = Color(0.739288, 0.739288, 0.739288, 1)
|
||||
@ -548,11 +581,14 @@ texture = ExtResource("22_3y5s5")
|
||||
[node name="Closeup敲门游戏" parent="Ground/DeployLayer" index="21" instance=ExtResource("23_81juy")]
|
||||
position = Vector2(466, 3)
|
||||
packed_scene = ExtResource("24_0o4rt")
|
||||
enable_snapper = true
|
||||
collision_width_and_x = Vector2(40, 0)
|
||||
|
||||
[node name="Closeup井" parent="Ground/DeployLayer" index="22" instance=ExtResource("23_81juy")]
|
||||
z_index = 6
|
||||
position = Vector2(2063, 50)
|
||||
packed_scene = ExtResource("26_yy4fp")
|
||||
enable_snapper = true
|
||||
|
||||
[node name="Ambush惊悚闪电" parent="Ground/DeployLayer" index="23" instance=ExtResource("25_iyaiw")]
|
||||
position = Vector2(1319, 40)
|
||||
@ -576,20 +612,14 @@ position = Vector2(2037, 67)
|
||||
sprite_frames = ExtResource("4_gd6xp")
|
||||
animation = &"疯子看井"
|
||||
frame_progress = 0.298829
|
||||
walk_to_edge_width = -1.0
|
||||
action_key = 3
|
||||
height = 49.11
|
||||
collision_width_and_x = Vector2(37.08, 0)
|
||||
dialogue_title = "c02_s11_井边疯子对话"
|
||||
|
||||
[node name="SpeakingSign2D" parent="Ground/DeployLayer/Npc井边疯子" index="4"]
|
||||
position = Vector2(0, -49.11)
|
||||
|
||||
[node name="Area2D" parent="Ground/DeployLayer/Npc井边疯子" index="5"]
|
||||
position = Vector2(-11, -2)
|
||||
|
||||
[node name="CollisionShape2D" parent="Ground/DeployLayer/Npc井边疯子/Area2D" index="0"]
|
||||
shape = SubResource("RectangleShape2D_2y8cu")
|
||||
|
||||
[node name="StaticBody2D" type="StaticBody2D" parent="Ground/DeployLayer/Npc井边疯子"]
|
||||
position = Vector2(2, 3)
|
||||
position = Vector2(11, 7)
|
||||
collision_layer = 2
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Ground/DeployLayer/Npc井边疯子/StaticBody2D"]
|
||||
@ -863,14 +893,14 @@ move_configs = Array[Dictionary]([{
|
||||
|
||||
[node name="Ambush等待的小蝉" parent="Ground/DeployLayer/火灾" instance=ExtResource("25_iyaiw")]
|
||||
position = Vector2(2142, 71)
|
||||
sign_mark_offset = Vector2(19.04, -38.54)
|
||||
sign_mark_offset = Vector2(13.57, -39.84)
|
||||
enabled = false
|
||||
trigger_mode = "interact"
|
||||
one_shot = false
|
||||
|
||||
[node name="小婵呼吸" type="AnimatedSprite2D" parent="Ground/DeployLayer/火灾/Ambush等待的小蝉"]
|
||||
z_index = 9
|
||||
position = Vector2(21, -32)
|
||||
position = Vector2(16, -36)
|
||||
sprite_frames = ExtResource("39_rnk1v")
|
||||
animation = &"小婵呼吸_牵手前"
|
||||
autoplay = "小婵呼吸_牵手前"
|
||||
@ -881,19 +911,27 @@ script = ExtResource("51_vddfx")
|
||||
metadata/_custom_type_script = "uid://cnt01hiw52bmn"
|
||||
|
||||
[node name="牵手跑" type="AnimatableBody2D" parent="Ground/DeployLayer/火灾"]
|
||||
visible = false
|
||||
position = Vector2(2133, 46)
|
||||
collision_layer = 4
|
||||
|
||||
[node name="牵手跑动画" parent="Ground/DeployLayer/火灾/牵手跑" instance=ExtResource("33_ycojw")]
|
||||
visible = false
|
||||
z_index = 5
|
||||
position = Vector2(17, -6)
|
||||
position = Vector2(17, -11)
|
||||
sprite_frames = ExtResource("39_rnk1v")
|
||||
animation = &"一起牵手跑步"
|
||||
animation = &"吕萍牵手动作"
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Ground/DeployLayer/火灾/牵手跑"]
|
||||
shape = SubResource("RectangleShape2D_vddfx")
|
||||
|
||||
[node name="Sfx2D跑步" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/火灾/牵手跑"]
|
||||
stream = SubResource("AudioStreamRandomizer_fxne6")
|
||||
volume_db = 3.0
|
||||
bus = &"game_sfx"
|
||||
script = ExtResource("54_o1qbs")
|
||||
loop = true
|
||||
metadata/_custom_type_script = "uid://wapo47a1oddf"
|
||||
|
||||
[node name="Interactable柜子" parent="Ground/DeployLayer" index="29" instance=ExtResource("8_xt8j0")]
|
||||
visible = false
|
||||
position = Vector2(1772, 48)
|
||||
@ -946,4 +984,3 @@ blend_mode = 1
|
||||
[editable path="Ground"]
|
||||
[editable path="Ground/DeployLayer/Interactable铁门"]
|
||||
[editable path="Ground/DeployLayer/Interactable铁门/Sign"]
|
||||
[editable path="Ground/DeployLayer/Npc井边疯子"]
|
||||
|
@ -22,7 +22,7 @@
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_gk1h4"]
|
||||
resource_local_to_scene = true
|
||||
size = Vector2(5, 70)
|
||||
size = Vector2(20, 70)
|
||||
|
||||
[node name="S04" type="Node2D"]
|
||||
|
||||
@ -88,16 +88,19 @@ texture = ExtResource("6_gk1h4")
|
||||
[node name="Closeup折锡纸" parent="Ground/DeployLayer" index="3" instance=ExtResource("6_66gue")]
|
||||
position = Vector2(189, 15)
|
||||
packed_scene = ExtResource("7_fvlg0")
|
||||
enable_snapper = null
|
||||
|
||||
[node name="Closeup老鼠精" parent="Ground/DeployLayer" index="4" instance=ExtResource("6_66gue")]
|
||||
position = Vector2(207.5, -40.5)
|
||||
texture = ExtResource("11_ffvrp")
|
||||
packed_scene = ExtResource("8_cm3g6")
|
||||
enable_snapper = null
|
||||
|
||||
[node name="Closeup花名册" parent="Ground/DeployLayer" index="5" instance=ExtResource("6_66gue")]
|
||||
position = Vector2(345, 31)
|
||||
position = Vector2(351, 31)
|
||||
first_interact_os_key = "c02_保卫科花名册os"
|
||||
packed_scene = ExtResource("6_fvlg0")
|
||||
enable_snapper = null
|
||||
|
||||
[node name="煤油灯" parent="Ground/DeployLayer" index="6" instance=ExtResource("8_wpvss")]
|
||||
position = Vector2(370, 39)
|
||||
@ -105,6 +108,7 @@ animation_low_mode = true
|
||||
hide_texture = true
|
||||
gaslight_texture = ExtResource("9_a43aq")
|
||||
ground_light_texture = ExtResource("10_svuj3")
|
||||
enable_snapper = null
|
||||
|
||||
[node name="CollisionShape2D" parent="Ground/DeployLayer/煤油灯/Area2D" index="0"]
|
||||
shape = SubResource("RectangleShape2D_gk1h4")
|
||||
|
@ -204,6 +204,7 @@ texture = ExtResource("8_mrltr")
|
||||
[node name="Closeup戏台" parent="Ground/DeployLayer" index="6" instance=ExtResource("10_2yvhw")]
|
||||
position = Vector2(320, 23)
|
||||
packed_scene = ExtResource("11_2yvhw")
|
||||
enable_snapper = null
|
||||
|
||||
[node name="Note一楼内侧通道" parent="Ground/DeployLayer" index="7" instance=ExtResource("10_8t4w6")]
|
||||
position = Vector2(394, 26)
|
||||
@ -221,6 +222,7 @@ texture = ExtResource("15_s2g5k")
|
||||
|
||||
[node name="Interactable粘鼠板" parent="Ground/DeployLayer" index="10" instance=ExtResource("13_uj0pt")]
|
||||
position = Vector2(604, 81)
|
||||
enable_snapper = null
|
||||
disable_prop_after_interacted = true
|
||||
interacted_texture = ExtResource("16_jknyg")
|
||||
prop_key = "prop_粘鼠板"
|
||||
@ -285,7 +287,7 @@ texture = ExtResource("8_tueh3")
|
||||
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
|
||||
points = PackedVector2Array(37, 150, 700, 150)
|
||||
|
||||
[node name="DirectionalLight2D" parent="Ground" index="8"]
|
||||
[node name="DirectionalLight2D" parent="Ground" index="7"]
|
||||
visible = false
|
||||
energy = 0.9
|
||||
blend_mode = 1
|
||||
|
@ -143,10 +143,6 @@ func _c02_final_show():
|
||||
|
||||
|
||||
func _on_exit_final_show(_arg):
|
||||
var player = SceneManager.get_player()
|
||||
# 显示角色光源,但不显示 sprite
|
||||
player.visible = true
|
||||
player.hide_sprite = true
|
||||
# 瞎、胖、蝉三人离开
|
||||
play("c02_final_show_end")
|
||||
SceneManager.freeze_player(0)
|
||||
@ -161,5 +157,4 @@ func _on_exit_final_show(_arg):
|
||||
await animation_finished
|
||||
c02_final_layer.queue_free()
|
||||
SceneManager.release_player()
|
||||
player.hide_sprite = false
|
||||
ArchiveManager.set_global_entry("c02_burning_end", true)
|
||||
|
@ -1,7 +1,8 @@
|
||||
[gd_scene load_steps=48 format=3 uid="uid://cootarwb44vvh"]
|
||||
[gd_scene load_steps=49 format=3 uid="uid://cootarwb44vvh"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_qkymk"]
|
||||
[ext_resource type="Script" uid="uid://cbt0ubygchxvv" path="res://scene/ground/scene/c02/s06_animation.gd" id="2_4dg6u"]
|
||||
[ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="3_h3h1a"]
|
||||
[ext_resource type="Texture2D" uid="uid://6ol2om68cd1q" path="res://asset/art/scene/c02/s06_二楼楼道/bg_背景.png" id="3_och2w"]
|
||||
[ext_resource type="AudioStream" uid="uid://dvc2emnfcmabx" path="res://asset/audio/sfx/环境音/白噪音/白噪声楼道1.wav" id="3_tqnu8"]
|
||||
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_2e08x"]
|
||||
@ -32,7 +33,7 @@
|
||||
[ext_resource type="AudioStream" uid="uid://bxp3f263aaqkp" path="res://asset/audio/sfx/脚步/02_室外_1.wav" id="29_tqnu8"]
|
||||
[ext_resource type="AudioStream" uid="uid://d3h0xe0qtai18" path="res://asset/audio/sfx/脚步/02_室外_2.wav" id="30_r7b2r"]
|
||||
[ext_resource type="AudioStream" uid="uid://dwa7xdvg5o0i" path="res://asset/audio/sfx/脚步/02_室外_3.wav" id="31_rpn6g"]
|
||||
[ext_resource type="PackedScene" uid="uid://ci5anaxsa1apl" path="res://scene/entity/local_inspectable.tscn" id="32_4ndyv"]
|
||||
[ext_resource type="PackedScene" uid="uid://ci5anaxsa1apl" path="res://scene/entity/inspectable.tscn" id="32_4ndyv"]
|
||||
[ext_resource type="Texture2D" uid="uid://day38kany2gmr" path="res://asset/art/scene/c02/小蝉寻人启事/e_寻人启事完整.png" id="33_h3h1a"]
|
||||
[ext_resource type="Texture2D" uid="uid://ce3d785v5lxg2" path="res://asset/art/scene/c02/小蝉寻人启事/ux_寻人启事完整.png" id="34_3u30v"]
|
||||
|
||||
@ -89,371 +90,62 @@ tracks/3/keys = {
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("DeployLayer/c02_final/吕萍:flip_h")
|
||||
tracks/4/path = NodePath("DirectionalLight2D:energy")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/5/type = "value"
|
||||
tracks/5/imported = false
|
||||
tracks/5/enabled = true
|
||||
tracks/5/path = NodePath("DirectionalLight2D:energy")
|
||||
tracks/5/interp = 1
|
||||
tracks/5/loop_wrap = true
|
||||
tracks/5/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [0.9]
|
||||
}
|
||||
tracks/6/type = "value"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("DeployLayer/c02_final/L环境光/L火柴光:energy")
|
||||
tracks/6/interp = 1
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [0.0]
|
||||
}
|
||||
tracks/7/type = "value"
|
||||
tracks/7/imported = false
|
||||
tracks/7/enabled = true
|
||||
tracks/7/path = NodePath("AnimationPlayer/Sfx擦亮火柴:playing")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/8/type = "value"
|
||||
tracks/8/imported = false
|
||||
tracks/8/enabled = true
|
||||
tracks/8/path = NodePath("AnimationPlayer/Sfx翻找东西:playing")
|
||||
tracks/8/interp = 1
|
||||
tracks/8/loop_wrap = true
|
||||
tracks/8/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/9/type = "value"
|
||||
tracks/9/imported = false
|
||||
tracks/9/enabled = true
|
||||
tracks/9/path = NodePath("DeployLayer/c02_final/L环境光:position")
|
||||
tracks/9/interp = 1
|
||||
tracks/9/loop_wrap = true
|
||||
tracks/9/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(627, 29)]
|
||||
}
|
||||
tracks/10/type = "value"
|
||||
tracks/10/imported = false
|
||||
tracks/10/enabled = true
|
||||
tracks/10/path = NodePath("DeployLayer/煤油灯/PointLight2D:visible")
|
||||
tracks/10/interp = 1
|
||||
tracks/10/loop_wrap = true
|
||||
tracks/10/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/11/type = "value"
|
||||
tracks/11/imported = false
|
||||
tracks/11/enabled = true
|
||||
tracks/11/path = NodePath("DeployLayer/煤油灯/PointLightGround2D:visible")
|
||||
tracks/11/interp = 1
|
||||
tracks/11/loop_wrap = true
|
||||
tracks/11/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/12/type = "value"
|
||||
tracks/12/imported = false
|
||||
tracks/12/enabled = true
|
||||
tracks/12/path = NodePath("DeployLayer/煤油灯/灯光:visible")
|
||||
tracks/12/interp = 1
|
||||
tracks/12/loop_wrap = true
|
||||
tracks/12/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/13/type = "value"
|
||||
tracks/13/imported = false
|
||||
tracks/13/enabled = true
|
||||
tracks/13/path = NodePath("DeployLayer/c02_final:visible")
|
||||
tracks/13/interp = 1
|
||||
tracks/13/loop_wrap = true
|
||||
tracks/13/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/14/type = "value"
|
||||
tracks/14/imported = false
|
||||
tracks/14/enabled = true
|
||||
tracks/14/path = NodePath("DeployLayer/c02_final/吕萍:visible")
|
||||
tracks/14/interp = 1
|
||||
tracks/14/loop_wrap = true
|
||||
tracks/14/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/15/type = "value"
|
||||
tracks/15/imported = false
|
||||
tracks/15/enabled = true
|
||||
tracks/15/path = NodePath("MainPlayer:hide_sprite")
|
||||
tracks/15/interp = 1
|
||||
tracks/15/loop_wrap = true
|
||||
tracks/15/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/16/type = "value"
|
||||
tracks/16/imported = false
|
||||
tracks/16/enabled = true
|
||||
tracks/16/path = NodePath("DeployLayer/c02_final/小蝉:visible")
|
||||
tracks/16/interp = 1
|
||||
tracks/16/loop_wrap = true
|
||||
tracks/16/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/17/type = "value"
|
||||
tracks/17/imported = false
|
||||
tracks/17/enabled = true
|
||||
tracks/17/path = NodePath("DeployLayer/c02_final/胖子:visible")
|
||||
tracks/17/interp = 1
|
||||
tracks/17/loop_wrap = true
|
||||
tracks/17/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/18/type = "value"
|
||||
tracks/18/imported = false
|
||||
tracks/18/enabled = true
|
||||
tracks/18/path = NodePath("DeployLayer/c02_final/瞎子:visible")
|
||||
tracks/18/interp = 1
|
||||
tracks/18/loop_wrap = true
|
||||
tracks/18/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/19/type = "value"
|
||||
tracks/19/imported = false
|
||||
tracks/19/enabled = true
|
||||
tracks/19/path = NodePath("MainPlayer:visible")
|
||||
tracks/19/interp = 1
|
||||
tracks/19/loop_wrap = true
|
||||
tracks/19/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/20/type = "value"
|
||||
tracks/20/imported = false
|
||||
tracks/20/enabled = true
|
||||
tracks/20/path = NodePath("DeployLayer/c02_final/小蝉:frame")
|
||||
tracks/20/interp = 1
|
||||
tracks/20/loop_wrap = true
|
||||
tracks/20/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [0]
|
||||
}
|
||||
tracks/21/type = "value"
|
||||
tracks/21/imported = false
|
||||
tracks/21/enabled = true
|
||||
tracks/21/path = NodePath("DeployLayer/c02_final/小蝉:animation")
|
||||
tracks/21/interp = 1
|
||||
tracks/21/loop_wrap = true
|
||||
tracks/21/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [&"小婵捂脸"]
|
||||
}
|
||||
tracks/22/type = "value"
|
||||
tracks/22/imported = false
|
||||
tracks/22/enabled = true
|
||||
tracks/22/path = NodePath("DeployLayer/c02_final/吕萍:animation")
|
||||
tracks/22/interp = 1
|
||||
tracks/22/loop_wrap = true
|
||||
tracks/22/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [&"小蝶擦火柴转身"]
|
||||
}
|
||||
tracks/23/type = "value"
|
||||
tracks/23/imported = false
|
||||
tracks/23/enabled = true
|
||||
tracks/23/path = NodePath("DeployLayer/c02_final/吕萍:frame")
|
||||
tracks/23/interp = 1
|
||||
tracks/23/loop_wrap = true
|
||||
tracks/23/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [3]
|
||||
}
|
||||
tracks/24/type = "value"
|
||||
tracks/24/imported = false
|
||||
tracks/24/enabled = true
|
||||
tracks/24/path = NodePath("DeployLayer/c02_final/L环境光:visible")
|
||||
tracks/24/interp = 1
|
||||
tracks/24/loop_wrap = true
|
||||
tracks/24/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_lh55k"]
|
||||
resource_name = "c02_final_show_end"
|
||||
length = 14.0
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("DeployLayer/c02_final:visible")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/1/type = "method"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("DeployLayer/c02_final/吕萍")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 2.93333),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"values": [{
|
||||
"args": [&"小蝶蹲下呼吸"],
|
||||
"method": &"play"
|
||||
}, {
|
||||
"args": [&"小蝶擦火柴蹲下起身"],
|
||||
"method": &"play"
|
||||
}]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("DeployLayer/c02_final/吕萍:flip_h")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(3.93333),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("DeployLayer/c02_final/吕萍:visible")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0, 4.3),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("MainPlayer:hide_sprite")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0, 4.3),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
}
|
||||
tracks/5/type = "value"
|
||||
tracks/5/imported = false
|
||||
tracks/5/enabled = true
|
||||
tracks/5/path = NodePath("DeployLayer/c02_final/小蝉:visible")
|
||||
tracks/5/path = NodePath("DeployLayer/c02_final/L环境光/L火柴光:energy")
|
||||
tracks/5/interp = 1
|
||||
tracks/5/loop_wrap = true
|
||||
tracks/5/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
"update": 0,
|
||||
"values": [0.0]
|
||||
}
|
||||
tracks/6/type = "value"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("DeployLayer/c02_final/胖子:visible")
|
||||
tracks/6/path = NodePath("AnimationPlayer/Sfx擦亮火柴:playing")
|
||||
tracks/6/interp = 1
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
"values": [false]
|
||||
}
|
||||
tracks/7/type = "value"
|
||||
tracks/7/imported = false
|
||||
tracks/7/enabled = true
|
||||
tracks/7/path = NodePath("DeployLayer/c02_final/瞎子:visible")
|
||||
tracks/7/path = NodePath("AnimationPlayer/Sfx翻找东西:playing")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
"values": [false]
|
||||
}
|
||||
tracks/8/type = "value"
|
||||
tracks/8/imported = false
|
||||
tracks/8/enabled = true
|
||||
tracks/8/path = NodePath("DeployLayer/c02_final/L环境光:visible")
|
||||
tracks/8/path = NodePath("DeployLayer/c02_final/L环境光:position")
|
||||
tracks/8/interp = 1
|
||||
tracks/8/loop_wrap = true
|
||||
tracks/8/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
"update": 0,
|
||||
"values": [Vector2(627, 29)]
|
||||
}
|
||||
tracks/9/type = "value"
|
||||
tracks/9/imported = false
|
||||
@ -491,6 +183,325 @@ tracks/11/keys = {
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/12/type = "value"
|
||||
tracks/12/imported = false
|
||||
tracks/12/enabled = true
|
||||
tracks/12/path = NodePath("DeployLayer/c02_final:visible")
|
||||
tracks/12/interp = 1
|
||||
tracks/12/loop_wrap = true
|
||||
tracks/12/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/13/type = "value"
|
||||
tracks/13/imported = false
|
||||
tracks/13/enabled = true
|
||||
tracks/13/path = NodePath("DeployLayer/c02_final/吕萍:visible")
|
||||
tracks/13/interp = 1
|
||||
tracks/13/loop_wrap = true
|
||||
tracks/13/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/14/type = "value"
|
||||
tracks/14/imported = false
|
||||
tracks/14/enabled = true
|
||||
tracks/14/path = NodePath("MainPlayer:hide_sprite")
|
||||
tracks/14/interp = 1
|
||||
tracks/14/loop_wrap = true
|
||||
tracks/14/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/15/type = "value"
|
||||
tracks/15/imported = false
|
||||
tracks/15/enabled = true
|
||||
tracks/15/path = NodePath("DeployLayer/c02_final/小蝉:visible")
|
||||
tracks/15/interp = 1
|
||||
tracks/15/loop_wrap = true
|
||||
tracks/15/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/16/type = "value"
|
||||
tracks/16/imported = false
|
||||
tracks/16/enabled = true
|
||||
tracks/16/path = NodePath("DeployLayer/c02_final/胖子:visible")
|
||||
tracks/16/interp = 1
|
||||
tracks/16/loop_wrap = true
|
||||
tracks/16/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/17/type = "value"
|
||||
tracks/17/imported = false
|
||||
tracks/17/enabled = true
|
||||
tracks/17/path = NodePath("DeployLayer/c02_final/瞎子:visible")
|
||||
tracks/17/interp = 1
|
||||
tracks/17/loop_wrap = true
|
||||
tracks/17/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/18/type = "value"
|
||||
tracks/18/imported = false
|
||||
tracks/18/enabled = true
|
||||
tracks/18/path = NodePath("MainPlayer:visible")
|
||||
tracks/18/interp = 1
|
||||
tracks/18/loop_wrap = true
|
||||
tracks/18/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/19/type = "value"
|
||||
tracks/19/imported = false
|
||||
tracks/19/enabled = true
|
||||
tracks/19/path = NodePath("DeployLayer/c02_final/小蝉:frame")
|
||||
tracks/19/interp = 1
|
||||
tracks/19/loop_wrap = true
|
||||
tracks/19/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [0]
|
||||
}
|
||||
tracks/20/type = "value"
|
||||
tracks/20/imported = false
|
||||
tracks/20/enabled = true
|
||||
tracks/20/path = NodePath("DeployLayer/c02_final/小蝉:animation")
|
||||
tracks/20/interp = 1
|
||||
tracks/20/loop_wrap = true
|
||||
tracks/20/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [&"小婵捂脸"]
|
||||
}
|
||||
tracks/21/type = "value"
|
||||
tracks/21/imported = false
|
||||
tracks/21/enabled = true
|
||||
tracks/21/path = NodePath("DeployLayer/c02_final/吕萍:animation")
|
||||
tracks/21/interp = 1
|
||||
tracks/21/loop_wrap = true
|
||||
tracks/21/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [&"小蝶擦火柴转身"]
|
||||
}
|
||||
tracks/22/type = "value"
|
||||
tracks/22/imported = false
|
||||
tracks/22/enabled = true
|
||||
tracks/22/path = NodePath("DeployLayer/c02_final/吕萍:frame")
|
||||
tracks/22/interp = 1
|
||||
tracks/22/loop_wrap = true
|
||||
tracks/22/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [3]
|
||||
}
|
||||
tracks/23/type = "value"
|
||||
tracks/23/imported = false
|
||||
tracks/23/enabled = true
|
||||
tracks/23/path = NodePath("DeployLayer/c02_final/L环境光:visible")
|
||||
tracks/23/interp = 1
|
||||
tracks/23/loop_wrap = true
|
||||
tracks/23/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_lh55k"]
|
||||
resource_name = "c02_final_show_end"
|
||||
length = 14.0
|
||||
capture_included = true
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("DeployLayer/c02_final:visible")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/1/type = "method"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("DeployLayer/c02_final/吕萍")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"values": [{
|
||||
"args": [&"小蝶蹲下呼吸"],
|
||||
"method": &"play"
|
||||
}]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("DeployLayer/c02_final/吕萍:visible")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 3.8),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("MainPlayer:hide_sprite")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0, 3.8),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("DeployLayer/c02_final/小蝉:visible")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/5/type = "value"
|
||||
tracks/5/imported = false
|
||||
tracks/5/enabled = true
|
||||
tracks/5/path = NodePath("DeployLayer/c02_final/胖子:visible")
|
||||
tracks/5/interp = 1
|
||||
tracks/5/loop_wrap = true
|
||||
tracks/5/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/6/type = "value"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("DeployLayer/c02_final/瞎子:visible")
|
||||
tracks/6/interp = 1
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/7/type = "value"
|
||||
tracks/7/imported = false
|
||||
tracks/7/enabled = true
|
||||
tracks/7/path = NodePath("DeployLayer/c02_final/L环境光:visible")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/8/type = "value"
|
||||
tracks/8/imported = false
|
||||
tracks/8/enabled = true
|
||||
tracks/8/path = NodePath("DeployLayer/煤油灯/PointLight2D:visible")
|
||||
tracks/8/interp = 1
|
||||
tracks/8/loop_wrap = true
|
||||
tracks/8/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/9/type = "value"
|
||||
tracks/9/imported = false
|
||||
tracks/9/enabled = true
|
||||
tracks/9/path = NodePath("DeployLayer/煤油灯/PointLightGround2D:visible")
|
||||
tracks/9/interp = 1
|
||||
tracks/9/loop_wrap = true
|
||||
tracks/9/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/10/type = "value"
|
||||
tracks/10/imported = false
|
||||
tracks/10/enabled = true
|
||||
tracks/10/path = NodePath("DeployLayer/煤油灯/灯光:visible")
|
||||
tracks/10/interp = 1
|
||||
tracks/10/loop_wrap = true
|
||||
tracks/10/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/11/type = "value"
|
||||
tracks/11/imported = false
|
||||
tracks/11/enabled = true
|
||||
tracks/11/path = NodePath("DeployLayer/c02_final/吕萍:animation")
|
||||
tracks/11/interp = 1
|
||||
tracks/11/loop_wrap = true
|
||||
tracks/11/keys = {
|
||||
"times": PackedFloat32Array(2.66667),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [&"小蝶擦火柴蹲下起身"]
|
||||
}
|
||||
tracks/12/type = "value"
|
||||
tracks/12/imported = false
|
||||
tracks/12/enabled = true
|
||||
tracks/12/path = NodePath("DeployLayer/c02_final/吕萍:frame")
|
||||
tracks/12/interp = 1
|
||||
tracks/12/loop_wrap = true
|
||||
tracks/12/keys = {
|
||||
"times": PackedFloat32Array(2.66667, 3.5),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 2,
|
||||
"values": [0, 3]
|
||||
}
|
||||
tracks/13/type = "value"
|
||||
tracks/13/imported = false
|
||||
tracks/13/enabled = true
|
||||
tracks/13/path = NodePath("MainPlayer:visible")
|
||||
tracks/13/interp = 1
|
||||
tracks/13/loop_wrap = true
|
||||
tracks/13/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_ciatp"]
|
||||
resource_name = "c02_final_show_join"
|
||||
@ -515,10 +526,10 @@ tracks/1/path = NodePath("DeployLayer/c02_final/L环境光:position")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(3.46667, 5.76667, 5.9, 6.13333, 6.73333, 7.53333, 9.6, 10.1333),
|
||||
"times": PackedFloat32Array(3.46667, 5.83333, 5.96667, 6.26667, 6.93333, 7.53333, 9.6, 10.1333),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(631, 27), Vector2(631, 30.0694), Vector2(663, 24.212), Vector2(674, 29), Vector2(673.571, 31.016), Vector2(682, 80), Vector2(682, 80), Vector2(673, 63)]
|
||||
"values": [Vector2(624, 26), Vector2(624, 27.069), Vector2(648.75, 27.214), Vector2(670, 30), Vector2(664.571, 28.016), Vector2(682, 80), Vector2(682, 80), Vector2(673, 63)]
|
||||
}
|
||||
tracks/2/type = "method"
|
||||
tracks/2/imported = false
|
||||
@ -527,7 +538,7 @@ tracks/2/path = NodePath("DeployLayer/c02_final/吕萍")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0.533333, 11.1667),
|
||||
"times": PackedFloat32Array(0.533333, 11.9667),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"values": [{
|
||||
"args": [&"小蝶擦火柴呼吸"],
|
||||
@ -542,7 +553,7 @@ tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("DeployLayer/c02_final/吕萍:animation")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/loop_wrap = false
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(3.6, 9.2),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
@ -554,12 +565,12 @@ tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("DeployLayer/c02_final/吕萍:frame")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = false
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(3.6, 7.53333, 9.2, 10.6),
|
||||
"times": PackedFloat32Array(3.6, 7.63333, 9.2, 11.5667),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
||||
"update": 2,
|
||||
"values": [0, 15, 0, 3]
|
||||
"values": [0, 15, 0, 5]
|
||||
}
|
||||
tracks/5/type = "value"
|
||||
tracks/5/imported = false
|
||||
@ -782,7 +793,7 @@ _data = {
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_lh55k"]
|
||||
resource_local_to_scene = true
|
||||
size = Vector2(5, 70)
|
||||
size = Vector2(20, 70)
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_wywax"]
|
||||
playback_mode = 1
|
||||
@ -838,7 +849,11 @@ data = {
|
||||
}
|
||||
oneshot_animation = ""
|
||||
|
||||
[node name="背景音效" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="0"]
|
||||
[node name="VibeSfx" type="Node" parent="Ground/AnimationPlayer" index="0"]
|
||||
script = ExtResource("3_h3h1a")
|
||||
metadata/_custom_type_script = "uid://cpejxlfni6n52"
|
||||
|
||||
[node name="背景音效" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"]
|
||||
stream = ExtResource("3_tqnu8")
|
||||
volume_db = -3.0
|
||||
autoplay = true
|
||||
@ -850,13 +865,13 @@ mode = "场景背景音"
|
||||
"感应玩家操作" = false
|
||||
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
|
||||
|
||||
[node name="Sfx翻找东西" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"]
|
||||
[node name="Sfx翻找东西" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="2"]
|
||||
stream = ExtResource("5_lh55k")
|
||||
bus = &"game_sfx"
|
||||
script = ExtResource("4_2e08x")
|
||||
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
|
||||
|
||||
[node name="Sfx擦亮火柴" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="2"]
|
||||
[node name="Sfx擦亮火柴" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="3"]
|
||||
stream = ExtResource("5_wywax")
|
||||
bus = &"game_sfx"
|
||||
script = ExtResource("4_2e08x")
|
||||
@ -919,6 +934,9 @@ debug_mov_animation = "小小小蝶动画(跑)"
|
||||
position = Vector2(616, -14)
|
||||
ground_light_texture = ExtResource("8_7x2h6")
|
||||
ground_height_offset = 15.0
|
||||
enable_snapper = null
|
||||
one_shot = false
|
||||
disable_prop_after_interacted = true
|
||||
|
||||
[node name="CollisionShape2D" parent="Ground/DeployLayer/煤油灯/Area2D" index="0"]
|
||||
shape = SubResource("RectangleShape2D_lh55k")
|
||||
@ -932,10 +950,14 @@ position = Vector2(329, -14)
|
||||
ground_light_texture = ExtResource("6_vbvbc")
|
||||
gaslight_energy = 2.0
|
||||
ground_height_offset = 15.0
|
||||
enable_snapper = null
|
||||
one_shot = false
|
||||
disable_prop_after_interacted = true
|
||||
|
||||
[node name="Interactable老鼠洞" parent="Ground/DeployLayer" index="8" instance=ExtResource("7_0d746")]
|
||||
position = Vector2(610, 50)
|
||||
enabled = false
|
||||
enable_snapper = null
|
||||
one_shot_max_times = 2
|
||||
disable_prop_after_interacted = true
|
||||
prop_key = "prop_小鞋子1"
|
||||
@ -999,16 +1021,19 @@ frame_progress = 0.121203
|
||||
position = Vector2(322, -269)
|
||||
packed_scene = ExtResource("12_intre")
|
||||
quit_closeup_on_escape = false
|
||||
enable_snapper = null
|
||||
|
||||
[node name="Closeup水盆" parent="Ground/DeployLayer" index="14" instance=ExtResource("11_owxx3")]
|
||||
position = Vector2(289, 16)
|
||||
packed_scene = ExtResource("16_p6da7")
|
||||
enable_snapper = null
|
||||
|
||||
[node name="Closeup谢幕演出" parent="Ground/DeployLayer" index="15" instance=ExtResource("11_owxx3")]
|
||||
position = Vector2(518, -272)
|
||||
action_key = 3
|
||||
packed_scene = ExtResource("25_m28ab")
|
||||
quit_closeup_on_escape = false
|
||||
enable_snapper = null
|
||||
|
||||
[node name="c02_final" type="Node2D" parent="Ground/DeployLayer" index="16"]
|
||||
visible = false
|
||||
@ -1035,7 +1060,7 @@ move_configs = Array[Dictionary]([{
|
||||
debug_mov_animation = "胖子走路"
|
||||
|
||||
[node name="吕萍" type="AnimatedSprite2D" parent="Ground/DeployLayer/c02_final"]
|
||||
position = Vector2(653, 38)
|
||||
position = Vector2(646, 39.5)
|
||||
sprite_frames = ExtResource("15_k01ve")
|
||||
animation = &"小蝶擦火柴转身"
|
||||
autoplay = "小蝶擦火柴呼吸"
|
||||
@ -1116,6 +1141,7 @@ texture = SubResource("GradientTexture2D_p6da7")
|
||||
position = Vector2(749, -2)
|
||||
texture = ExtResource("33_h3h1a")
|
||||
texture_cover = ExtResource("34_3u30v")
|
||||
content_key = "c02_寻人启事_完整"
|
||||
|
||||
[node name="MainPlayer" parent="Ground" index="4"]
|
||||
position = Vector2(650, 98)
|
||||
|
@ -154,6 +154,7 @@ texture = ExtResource("8_3ftnp")
|
||||
position = Vector2(364, 55)
|
||||
texture = ExtResource("6_mty8e")
|
||||
enabled = false
|
||||
enable_snapper = false
|
||||
mute_when_interacted = true
|
||||
one_shot = false
|
||||
|
||||
@ -187,7 +188,13 @@ texture = ExtResource("12_27dvh")
|
||||
position = Vector2(373, -13.8031)
|
||||
gaslight_energy = 2.0
|
||||
gaslight_ground_energy = 2.0
|
||||
enable_snapper = null
|
||||
collision_width_and_x = true
|
||||
mute_when_interacted = false
|
||||
one_shot = false
|
||||
one_shot_max_times = true
|
||||
disable_prop_after_interacted = 1
|
||||
interacted_texture = false
|
||||
|
||||
[node name="拼接小猫玩具" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="12"]
|
||||
visible = false
|
||||
|
@ -1,8 +1,7 @@
|
||||
[gd_scene load_steps=14 format=3 uid="uid://cxw5rovg5mu1a"]
|
||||
[gd_scene load_steps=15 format=3 uid="uid://cxw5rovg5mu1a"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://c8vsfqoeu26gk" path="res://scene/ground/script/c02/s00_煤油灯.gd" id="1_0aa53"]
|
||||
[ext_resource type="Texture2D" uid="uid://b3qgmrfslj135" path="res://asset/art/scene/c02/s03_公寓一楼院子/光晕/光晕1.png" id="2_uusov"]
|
||||
[ext_resource type="AudioStream" uid="uid://inmdv5gqqius" path="res://asset/audio/sfx/UI/门锁互动.mp3" id="3_1xq2f"]
|
||||
[ext_resource type="Texture2D" uid="uid://c1nrsyh1ss82v" path="res://asset/art/scene/c02/s03_公寓一楼院子/地面物品反光/地反光1.png" id="3_y2gsk"]
|
||||
[ext_resource type="Texture2D" uid="uid://dtyg0nugb2tnf" path="res://asset/art/ui/action_mark/UI探索.png" id="4_abb1f"]
|
||||
[ext_resource type="PackedScene" uid="uid://c4tipnj1cr1j3" path="res://scene/entity/ux/sign.tscn" id="4_w1aco"]
|
||||
@ -11,17 +10,20 @@
|
||||
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="8_abb1f"]
|
||||
[ext_resource type="AudioStream" uid="uid://cljr4g0sivpdh" path="res://asset/audio/sfx/交互/sfx_煤油灯点燃成功.wav" id="9_abb1f"]
|
||||
[ext_resource type="SpriteFrames" uid="uid://3nas025c2c5u" path="res://asset/art/gif/c02_杂项/c02_杂项_frames.tres" id="9_h0ajm"]
|
||||
[ext_resource type="AudioStream" uid="uid://dph8v3v5mq1xl" path="res://asset/audio/sfx/交互/sfx_交互失败.wav" id="9_l338h"]
|
||||
[ext_resource type="Texture2D" uid="uid://djfn6ya63emu0" path="res://asset/art/scene/c02/s02_大门过道/e_煤油灯座.png" id="10_h0ajm"]
|
||||
[ext_resource type="Script" uid="uid://cnt01hiw52bmn" path="res://scene/entity/ux/sign_snapper.gd" id="13_l338h"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_h0ajm"]
|
||||
resource_local_to_scene = true
|
||||
size = Vector2(5, 70)
|
||||
size = Vector2(20, 70)
|
||||
|
||||
[node name="煤油灯" type="Sprite2D"]
|
||||
script = ExtResource("1_0aa53")
|
||||
gaslight_texture = ExtResource("2_uusov")
|
||||
ground_light_texture = ExtResource("3_y2gsk")
|
||||
debug_light_switch = true
|
||||
enable_snapper = null
|
||||
unrevealed_sign_texture = ExtResource("4_abb1f")
|
||||
unmatched_sign_texture = ExtResource("5_l338h")
|
||||
matched_sign_texture = ExtResource("6_ivr1s")
|
||||
@ -31,7 +33,7 @@ prop_key2 = ""
|
||||
prop_key3 = ""
|
||||
|
||||
[node name="SfxInvalid" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource("3_1xq2f")
|
||||
stream = ExtResource("9_l338h")
|
||||
bus = &"game_sfx"
|
||||
script = ExtResource("8_abb1f")
|
||||
|
||||
@ -69,3 +71,12 @@ texture = ExtResource("10_h0ajm")
|
||||
|
||||
[node name="Sign" parent="." instance=ExtResource("4_w1aco")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="SignSnapper" type="Marker2D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("13_l338h")
|
||||
radius = 3.0
|
||||
delay_arrived = 0.1
|
||||
action_on_arrived = 4
|
||||
delay_after_action = 0.4
|
||||
metadata/_custom_type_script = "uid://cnt01hiw52bmn"
|
||||
|
@ -3,10 +3,10 @@
|
||||
[ext_resource type="Texture2D" uid="uid://cawpq7rnho5px" path="res://asset/art/gif/c02_小手/洞.png" id="1_47cqy"]
|
||||
[ext_resource type="Script" uid="uid://my5xqi3bkka6" path="res://scene/ground/script/c02/小手讨东西.gd" id="1_n7thl"]
|
||||
[ext_resource type="Texture2D" uid="uid://dtyg0nugb2tnf" path="res://asset/art/ui/action_mark/UI探索.png" id="3_lr23o"]
|
||||
[ext_resource type="AudioStream" uid="uid://inmdv5gqqius" path="res://asset/audio/sfx/UI/门锁互动.mp3" id="3_n7thl"]
|
||||
[ext_resource type="Texture2D" uid="uid://xcmvfp72l061" path="res://asset/art/ui/action_mark/UI锁.png" id="4_0tuif"]
|
||||
[ext_resource type="PackedScene" uid="uid://c4tipnj1cr1j3" path="res://scene/entity/ux/sign.tscn" id="5_3c204"]
|
||||
[ext_resource type="Texture2D" uid="uid://gui0ubwlwoi0" path="res://asset/art/ui/action_mark/UI手.png" id="5_n2hq3"]
|
||||
[ext_resource type="AudioStream" uid="uid://dph8v3v5mq1xl" path="res://asset/audio/sfx/交互/sfx_交互失败.wav" id="6_lr23o"]
|
||||
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="7_7dftu"]
|
||||
[ext_resource type="PackedScene" uid="uid://b50n0hvs4yh75" path="res://addons/property-inspector/pro_animation_sprite2d/pro_animated_sprite.tscn" id="7_brfob"]
|
||||
[ext_resource type="AudioStream" uid="uid://44slgncnt6sj" path="res://asset/audio/sfx/交互/第一章/sfx_手交互成功.wav" id="8_7dftu"]
|
||||
@ -28,7 +28,7 @@ unmatched_sign_texture = ExtResource("4_0tuif")
|
||||
matched_sign_texture = ExtResource("5_n2hq3")
|
||||
|
||||
[node name="SfxInvalid" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource("3_n7thl")
|
||||
stream = ExtResource("6_lr23o")
|
||||
bus = &"game_sfx"
|
||||
script = ExtResource("7_7dftu")
|
||||
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
|
||||
@ -120,4 +120,7 @@ texture = ExtResource("10_47cqy")
|
||||
[node name="SignSnapper" type="Marker2D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("15_lr23o")
|
||||
delay_arrived = 0.1
|
||||
action_on_arrived = 4
|
||||
delay_after_action = 0.4
|
||||
metadata/_custom_type_script = "uid://cnt01hiw52bmn"
|
||||
|