hot fix; 优化音量度档过程
BIN
asset/art/prop/c01/信件碎片.png
Executable file → Normal file
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
BIN
asset/art/scene/c02/s06_二楼楼道/e_小蝉偷看.png
Normal file
After Width: | Height: | Size: 6.6 KiB |
34
asset/art/scene/c02/s06_二楼楼道/e_小蝉偷看.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://ca3km2f6ncrqo"
|
||||||
|
path="res://.godot/imported/e_小蝉偷看.png-be6958103c78585802bcfef240eff388.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://asset/art/scene/c02/s06_二楼楼道/e_小蝉偷看.png"
|
||||||
|
dest_files=["res://.godot/imported/e_小蝉偷看.png-be6958103c78585802bcfef240eff388.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
|
34
asset/art/scene/c02/s06_二楼楼道/小蝉偷看.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cwa3hlkld05lu"
|
||||||
|
path="res://.godot/imported/小蝉偷看.png-525b25a4dd1af5873e6e5e60507df15c.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://asset/art/scene/c02/s06_二楼楼道/小蝉偷看.png"
|
||||||
|
dest_files=["res://.godot/imported/小蝉偷看.png-525b25a4dd1af5873e6e5e60507df15c.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: 59 KiB After Width: | Height: | Size: 36 KiB |
BIN
asset/audio/sfx/game/弹珠游戏/小孩从近到远跑步.wav
Executable file
24
asset/audio/sfx/game/弹珠游戏/小孩从近到远跑步.wav.import
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://slb4jd8n207c"
|
||||||
|
path="res://.godot/imported/小孩从近到远跑步.wav-0bd313abfb25bb06b3eb5dee0526bf49.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://asset/audio/sfx/game/弹珠游戏/小孩从近到远跑步.wav"
|
||||||
|
dest_files=["res://.godot/imported/小孩从近到远跑步.wav-0bd313abfb25bb06b3eb5dee0526bf49.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
|
@ -56,11 +56,11 @@ ui_夜行船6,夜行船,,,,,
|
|||||||
prop_空手,空手,,,,,
|
prop_空手,空手,,,,,
|
||||||
prop_空手_说明,空空如也,,,,,
|
prop_空手_说明,空空如也,,,,,
|
||||||
prop_信碎片1,信碎片(一),,,[#texture=c01/信件左上.png],,
|
prop_信碎片1,信碎片(一),,,[#texture=c01/信件左上.png],,
|
||||||
prop_信碎片1_说明,浦育院院长秦阳,民国21年,11月20日,,,,,
|
prop_信碎片1_说明,浦育院院长秦阳,,,,,
|
||||||
prop_信碎片2,信碎片(二),,,[#texture=c01/信件右上.png],,
|
prop_信碎片2,信碎片(二),,,[#texture=c01/信件右上.png],,
|
||||||
prop_信碎片2_说明,...,,,,,
|
prop_信碎片2_说明,民国21年,11月20日,,,,,
|
||||||
prop_银元,银元,,,[#texture=c01/银元.png],,
|
prop_银元,银元,,,[#texture=c01/银元.png],,
|
||||||
prop_银元_说明,一枚“袁大头”银元,中華民國十年造。,,,,,
|
prop_银元_说明,一枚“袁大头”银元,中华民国十年造。,,,,,
|
||||||
prop_院长的信,院长的信,,,[#texture=c01/院长的信物品.png][#inspect=c01/院长的信.png],,
|
prop_院长的信,院长的信,,,[#texture=c01/院长的信物品.png][#inspect=c01/院长的信.png],,
|
||||||
prop_院长的信_说明,浦育院院长秦阳<br>民国21年11月20日<br>致吕萍:<br>你现下境况如何?<br>你虽离开浦育院已久,但我始终没有忘记为你祈祷。<br>愿上帝保佑你走向真正光明的道路。我相信这也是当年你父亲将你托付给我时的殷切愿景。<br>你既已成人,无论你的父母出于何种理由选择与你分离,你都应当拥有知晓真相的权利,所以我将公寓地址附在了信后,除此之外,我亦知之甚少。<br>若有闲暇,欢迎你回浦育院看看。<br>院长童玉君<br>民国十九年十月十五日<br>公寓地址 芦昌路26弄3号,,,,,
|
prop_院长的信_说明,浦育院院长秦阳<br>民国21年11月20日<br>致吕萍:<br>你现下境况如何?<br>你虽离开浦育院已久,但我始终没有忘记为你祈祷。<br>愿上帝保佑你走向真正光明的道路。我相信这也是当年你父亲将你托付给我时的殷切愿景。<br>你既已成人,无论你的父母出于何种理由选择与你分离,你都应当拥有知晓真相的权利,所以我将公寓地址附在了信后,除此之外,我亦知之甚少。<br>若有闲暇,欢迎你回浦育院看看。<br>院长童玉君<br>民国十九年十月十五日<br>公寓地址 芦昌路26弄3号,,,,,
|
||||||
prop_火柴,火柴,,,[#texture=c02/火柴.png],,
|
prop_火柴,火柴,,,[#texture=c02/火柴.png],,
|
||||||
@ -129,7 +129,7 @@ c01_s07_获得报纸,这是什么?,,,,,
|
|||||||
c01_s07_书店展柜,院长说,读一百本书,就可以成为无所不能的大人。<br>如果我再大一些,没准可以求店长把我留下,我会干很多活,也能吃苦...,,,,,
|
c01_s07_书店展柜,院长说,读一百本书,就可以成为无所不能的大人。<br>如果我再大一些,没准可以求店长把我留下,我会干很多活,也能吃苦...,,,,,
|
||||||
c01_s08_书架游戏完成,这些书都被老鼠啃坏了,连木头架子都没放过。,,,,,
|
c01_s08_书架游戏完成,这些书都被老鼠啃坏了,连木头架子都没放过。,,,,,
|
||||||
c01_s08_获得袁大头后,工钱还在老地方。,,,,,
|
c01_s08_获得袁大头后,工钱还在老地方。,,,,,
|
||||||
c02_海报_剪辫子侦探,剪辮懸樑上偵探奇聞,,,,,
|
c02_海报_剪辫子侦探,剪辫悬梁上侦探奇闻,,,,,
|
||||||
c02_海报_戏法班,朱连魁全班戏法——「各有幻女...演技新奇」,,,,,
|
c02_海报_戏法班,朱连魁全班戏法——「各有幻女...演技新奇」,,,,,
|
||||||
c02_芦昌路26,芦昌路26弄3号,我父母真的住在这里吗...,,,,,
|
c02_芦昌路26,芦昌路26弄3号,我父母真的住在这里吗...,,,,,
|
||||||
c02_s01_下黄包车,院长在信里提到的就是这里,,,,,
|
c02_s01_下黄包车,院长在信里提到的就是这里,,,,,
|
||||||
@ -167,7 +167,7 @@ c02_二楼楼梯杂物堆,堆满了杂物,看样子没办法从这里上去了
|
|||||||
c02_二楼水盆,盆里的水很清澈,看上去像是刚盛的。,,,,,
|
c02_二楼水盆,盆里的水很清澈,看上去像是刚盛的。,,,,,
|
||||||
c02_二楼老鼠洞,到处都是老鼠洞,怕不是整栋楼都被老鼠打通了。,,,,,
|
c02_二楼老鼠洞,到处都是老鼠洞,怕不是整栋楼都被老鼠打通了。,,,,,
|
||||||
c02_二楼血脚印,又是这种小小尖尖的血脚印...,,,,,
|
c02_二楼血脚印,又是这种小小尖尖的血脚印...,,,,,
|
||||||
c02_离开红色演出,刚才的那两个人...是幻觉吗,,,,,
|
c02_离开红色演出,刚才那些...到底是怎么回事?,,,,,
|
||||||
c02_瞎子卧室_八卦图,「乾三连,坤六断;震仰盂,艮覆碗;离中虚,坎中满;兑上缺,巽下断」<br>咦,这口诀是谁教我的来着...,,,,,
|
c02_瞎子卧室_八卦图,「乾三连,坤六断;震仰盂,艮覆碗;离中虚,坎中满;兑上缺,巽下断」<br>咦,这口诀是谁教我的来着...,,,,,
|
||||||
c02_瞎子卧室_血脚印,这画上的脚印和刚刚看到的一样。,,,,,
|
c02_瞎子卧室_血脚印,这画上的脚印和刚刚看到的一样。,,,,,
|
||||||
c02_瞎子卧室_十字架,院长房间里也有一个类似的十字架。,,,,,
|
c02_瞎子卧室_十字架,院长房间里也有一个类似的十字架。,,,,,
|
||||||
|
|
@ -164,7 +164,7 @@
|
|||||||
这些书都被老鼠啃坏了,连木头架子都没放过。 [ID:c01_s08_书架游戏完成]
|
这些书都被老鼠啃坏了,连木头架子都没放过。 [ID:c01_s08_书架游戏完成]
|
||||||
工钱还在老地方。 [ID:c01_s08_获得袁大头后]
|
工钱还在老地方。 [ID:c01_s08_获得袁大头后]
|
||||||
# c02
|
# c02
|
||||||
剪辮懸樑上偵探奇聞 [ID:c02_海报_剪辫子侦探]
|
剪辫悬梁上侦探奇闻 [ID:c02_海报_剪辫子侦探]
|
||||||
朱连魁全班戏法——「各有幻女...演技新奇」 [ID:c02_海报_戏法班]
|
朱连魁全班戏法——「各有幻女...演技新奇」 [ID:c02_海报_戏法班]
|
||||||
# c02-s01 街道
|
# c02-s01 街道
|
||||||
芦昌路26弄3号,我父母真的住在这里吗... [ID:c02_芦昌路26]
|
芦昌路26弄3号,我父母真的住在这里吗... [ID:c02_芦昌路26]
|
||||||
|
@ -1,17 +1,16 @@
|
|||||||
[gd_resource type="AudioBusLayout" format=3 uid="uid://d3rxegy32deki"]
|
[gd_resource type="AudioBusLayout" format=3 uid="uid://d3rxegy32deki"]
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
bus/0/volume_db = -0.030508
|
bus/0/volume_db = 0.173916
|
||||||
bus/0/send = &"music"
|
|
||||||
bus/1/name = &"dialog"
|
bus/1/name = &"dialog"
|
||||||
bus/1/solo = false
|
bus/1/solo = false
|
||||||
bus/1/mute = false
|
bus/1/mute = false
|
||||||
bus/1/bypass_fx = false
|
bus/1/bypass_fx = false
|
||||||
bus/1/volume_db = -0.00828743
|
bus/1/volume_db = -0.106054
|
||||||
bus/1/send = &"game_sfx"
|
bus/1/send = &"game_sfx"
|
||||||
bus/2/name = &"game_sfx"
|
bus/2/name = &"game_sfx"
|
||||||
bus/2/solo = false
|
bus/2/solo = false
|
||||||
bus/2/mute = false
|
bus/2/mute = false
|
||||||
bus/2/bypass_fx = false
|
bus/2/bypass_fx = false
|
||||||
bus/2/volume_db = -0.00606537
|
bus/2/volume_db = -0.00828743
|
||||||
bus/2/send = &"Master"
|
bus/2/send = &"Master"
|
||||||
|
@ -72,9 +72,9 @@ signal auto_save_seconds_changed
|
|||||||
@export var window_fullscreen := false
|
@export var window_fullscreen := false
|
||||||
@export var window_top := true
|
@export var window_top := true
|
||||||
# sound
|
# sound
|
||||||
@export var db_master := linear_to_db(1.0) # default
|
@export var db_master := -3.0 # default
|
||||||
@export var db_dialog := linear_to_db(0.7) # default
|
@export var db_dialog := -7.0 # default
|
||||||
@export var db_game_sfx := linear_to_db(0.7) # default
|
@export var db_game_sfx := 3.0 # default
|
||||||
# language
|
# language
|
||||||
# -1 null; 0 zh_CN; 1 zh_SH; 2 en
|
# -1 null; 0 zh_CN; 1 zh_SH; 2 en
|
||||||
@export var language := 0
|
@export var language := 0
|
||||||
|
@ -29,6 +29,12 @@ func _set_config(val: GlobalConfig) -> void:
|
|||||||
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Master"), config.db_master)
|
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Master"), config.db_master)
|
||||||
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("game_sfx"), config.db_game_sfx)
|
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("game_sfx"), config.db_game_sfx)
|
||||||
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("dialog"), config.db_dialog)
|
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("dialog"), config.db_dialog)
|
||||||
|
prints(
|
||||||
|
"config load volume_db settings (master, sfx, dialog): ",
|
||||||
|
config.db_master,
|
||||||
|
config.db_game_sfx,
|
||||||
|
config.db_dialog
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
func _on_timer_timeout():
|
func _on_timer_timeout():
|
||||||
|
@ -42,15 +42,15 @@ func c02_fire_count_down_try_start():
|
|||||||
c02_fire_count_down_timer = Timer.new()
|
c02_fire_count_down_timer = Timer.new()
|
||||||
c02_fire_count_down_timer.autostart = true
|
c02_fire_count_down_timer.autostart = true
|
||||||
if GlobalConfig.DEBUG:
|
if GlobalConfig.DEBUG:
|
||||||
SceneManager.pop_debug_dialog_info("debug", "当前为测试模式,倒计时 10s;正式模式倒计时 60s")
|
SceneManager.pop_debug_dialog_info("debug", "当前为测试模式,倒计时 15s;正式模式倒计时 60s")
|
||||||
c02_fire_count_down_timer.wait_time = 10
|
c02_fire_count_down_timer.wait_time = 15
|
||||||
else:
|
else:
|
||||||
c02_fire_count_down_timer.wait_time = 60
|
c02_fire_count_down_timer.wait_time = 60
|
||||||
c02_fire_count_down_timer.one_shot = false
|
c02_fire_count_down_timer.one_shot = false
|
||||||
c02_fire_count_down_timer.timeout.connect(_on_c02_fire_count_down_timeout)
|
c02_fire_count_down_timer.timeout.connect(_on_c02_fire_count_down_timeout)
|
||||||
add_child(c02_fire_count_down_timer)
|
add_child(c02_fire_count_down_timer)
|
||||||
SceneManager.pop_debug_dialog_info("音效", "霸凌救小蝉倒计时")
|
SceneManager.pop_debug_dialog_info("音效", "霸凌救小蝉倒计时")
|
||||||
AudioManager.loop_bgm_music("霸凌救小蝉倒计时", c02_fire_count_down_sfx)
|
AudioManager.loop_bgm_music("霸凌救小蝉倒计时", c02_fire_count_down_sfx, 5)
|
||||||
|
|
||||||
|
|
||||||
func _on_c02_fire_count_down_timeout():
|
func _on_c02_fire_count_down_timeout():
|
||||||
@ -66,7 +66,7 @@ func _on_c02_fire_count_down_timeout():
|
|||||||
# res://asset/audio/BGM/心跳背景音.mp3
|
# res://asset/audio/BGM/心跳背景音.mp3
|
||||||
await get_tree().create_timer(3.0).timeout
|
await get_tree().create_timer(3.0).timeout
|
||||||
SceneManager.pop_debug_dialog_info("音效", "霸凌救小蝉倒计时")
|
SceneManager.pop_debug_dialog_info("音效", "霸凌救小蝉倒计时")
|
||||||
AudioManager.loop_bgm_music("霸凌救小蝉倒计时", c02_fire_count_down_sfx)
|
AudioManager.loop_bgm_music("霸凌救小蝉倒计时", c02_fire_count_down_sfx, 5)
|
||||||
c02_fire_count_down_timer.start()
|
c02_fire_count_down_timer.start()
|
||||||
|
|
||||||
|
|
||||||
|
@ -120,10 +120,10 @@ func freeze_and_play(lock_time: float, animation := "", auto_quit := false) -> v
|
|||||||
printerr("Player node not found")
|
printerr("Player node not found")
|
||||||
|
|
||||||
|
|
||||||
func release_player():
|
func release_player(force_clear:=false):
|
||||||
var player = get_player()
|
var player = get_player()
|
||||||
if player:
|
if player:
|
||||||
player.release_player()
|
player.release_player(force_clear)
|
||||||
else:
|
else:
|
||||||
printerr("Player node not found")
|
printerr("Player node not found")
|
||||||
|
|
||||||
|
@ -62,8 +62,7 @@ signal animation_finished
|
|||||||
if is_node_ready():
|
if is_node_ready():
|
||||||
_check_character_runtime_status()
|
_check_character_runtime_status()
|
||||||
if val > 3:
|
if val > 3:
|
||||||
freeze_player(0, val, true)
|
freeze_player(1, val, true)
|
||||||
release_player()
|
|
||||||
|
|
||||||
# 使用 new,方便在 editor 中刷新新值
|
# 使用 new,方便在 editor 中刷新新值
|
||||||
var current_animation_config: Dictionary
|
var current_animation_config: Dictionary
|
||||||
@ -298,14 +297,14 @@ func player_action(action_code: int, auto_quit: bool):
|
|||||||
sprite.animation_finished.connect(_play_animation, CONNECT_ONE_SHOT)
|
sprite.animation_finished.connect(_play_animation, CONNECT_ONE_SHOT)
|
||||||
|
|
||||||
|
|
||||||
var lock_mutex = Mutex.new()
|
var freeze_counter := 0
|
||||||
var release_timer: SceneTreeTimer
|
var release_timer: SceneTreeTimer
|
||||||
|
|
||||||
|
|
||||||
# 自动解除对应 animation 的 loop 状态
|
# 自动解除对应 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.
|
# 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:
|
func freeze_player(lock_time: float, action_code: int, auto_quit: bool) -> void:
|
||||||
lock_mutex.lock()
|
freeze_counter += 1
|
||||||
action_freezed = true
|
action_freezed = true
|
||||||
player_action(action_code, auto_quit)
|
player_action(action_code, auto_quit)
|
||||||
if lock_time:
|
if lock_time:
|
||||||
@ -314,15 +313,24 @@ func freeze_player(lock_time: float, action_code: int, auto_quit: bool) -> void:
|
|||||||
else:
|
else:
|
||||||
release_timer = get_tree().create_timer(lock_time)
|
release_timer = get_tree().create_timer(lock_time)
|
||||||
release_timer.timeout.connect(release_player)
|
release_timer.timeout.connect(release_player)
|
||||||
lock_mutex.unlock()
|
|
||||||
|
|
||||||
|
|
||||||
func release_player():
|
# force_clear 强制清零计数器
|
||||||
|
func release_player(force_clear := false):
|
||||||
release_timer = null
|
release_timer = null
|
||||||
lock_mutex.lock()
|
freeze_counter -= 1
|
||||||
|
if force_clear:
|
||||||
|
if freeze_counter != 0 and GlobalConfig.DEBUG:
|
||||||
|
printerr(
|
||||||
|
"release_player force_clear=True worked. freeze_counter before: %s" % freeze_counter
|
||||||
|
)
|
||||||
|
freeze_counter = 0
|
||||||
|
if freeze_counter == 0:
|
||||||
action_freezed = false
|
action_freezed = false
|
||||||
|
elif freeze_counter < 0:
|
||||||
|
action_freezed = false
|
||||||
|
printerr("release_player called with freeze_counter < 0, this should not happen.")
|
||||||
# velocity_ratio = 1.0
|
# velocity_ratio = 1.0
|
||||||
lock_mutex.unlock()
|
|
||||||
# _play_animation()
|
# _play_animation()
|
||||||
|
|
||||||
|
|
||||||
|
@ -42,12 +42,13 @@ size = Vector2(15, 180)
|
|||||||
z_index = 5
|
z_index = 5
|
||||||
collision_mask = 2
|
collision_mask = 2
|
||||||
script = ExtResource("1_3a78y")
|
script = ExtResource("1_3a78y")
|
||||||
|
catty_light_energy = 0.3
|
||||||
running_locked = true
|
running_locked = true
|
||||||
metadata/_edit_vertical_guides_ = [-15.0, -3.0]
|
metadata/_edit_vertical_guides_ = [-15.0, -3.0]
|
||||||
|
|
||||||
[node name="PointLight2D" type="PointLight2D" parent="."]
|
[node name="PointLight2D" type="PointLight2D" parent="."]
|
||||||
position = Vector2(0, -60)
|
position = Vector2(0, -60)
|
||||||
energy = 0.8
|
energy = 1.2
|
||||||
range_item_cull_mask = 15
|
range_item_cull_mask = 15
|
||||||
shadow_enabled = true
|
shadow_enabled = true
|
||||||
texture = SubResource("GradientTexture2D_gk3xo")
|
texture = SubResource("GradientTexture2D_gk3xo")
|
||||||
|
@ -45,7 +45,6 @@ shape = SubResource("RectangleShape2D_ogin7")
|
|||||||
[node name="SignSnapper" type="Marker2D" parent="."]
|
[node name="SignSnapper" type="Marker2D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
script = ExtResource("7_dnubm")
|
script = ExtResource("7_dnubm")
|
||||||
release_player_on_arrived = false
|
|
||||||
radius = 3.0
|
radius = 3.0
|
||||||
delay_arrived = 0.1
|
delay_arrived = 0.1
|
||||||
action_on_arrived = 4
|
action_on_arrived = 4
|
||||||
|
@ -181,7 +181,6 @@ shape = SubResource("RectangleShape2D_4fuic")
|
|||||||
[node name="SignSnapper" type="Marker2D" parent="."]
|
[node name="SignSnapper" type="Marker2D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
script = ExtResource("8_7lwt5")
|
script = ExtResource("8_7lwt5")
|
||||||
release_player_on_arrived = false
|
|
||||||
radius = 20.0
|
radius = 20.0
|
||||||
walk_to_edge = true
|
walk_to_edge = true
|
||||||
delay_arrived = 0.1
|
delay_arrived = 0.1
|
||||||
|
@ -85,6 +85,7 @@ packed_scene = ExtResource("7_fvlg0")
|
|||||||
first_interact_os_key = "c02_保卫科祭台os"
|
first_interact_os_key = "c02_保卫科祭台os"
|
||||||
|
|
||||||
[node name="Closeup老鼠精" parent="Ground/DeployLayer" index="4" instance=ExtResource("6_66gue")]
|
[node name="Closeup老鼠精" parent="Ground/DeployLayer" index="4" instance=ExtResource("6_66gue")]
|
||||||
|
light_mask = 5
|
||||||
position = Vector2(207.5, -40.5)
|
position = Vector2(207.5, -40.5)
|
||||||
texture = ExtResource("11_ffvrp")
|
texture = ExtResource("11_ffvrp")
|
||||||
packed_scene = ExtResource("8_cm3g6")
|
packed_scene = ExtResource("8_cm3g6")
|
||||||
|
@ -252,8 +252,9 @@ animation = &"奇怪的肉被拖进去动画"
|
|||||||
visible = false
|
visible = false
|
||||||
position = Vector2(668, 85)
|
position = Vector2(668, 85)
|
||||||
texture = ExtResource("18_bk7rf")
|
texture = ExtResource("18_bk7rf")
|
||||||
sign_mark_offset = Vector2(0, -9.86)
|
sign_mark_offset = Vector2(-2.98, -9.86)
|
||||||
enabled = false
|
enabled = false
|
||||||
|
collision_width_and_x = Vector2(43.96, 0)
|
||||||
prop_key = "prop_奇怪的肉"
|
prop_key = "prop_奇怪的肉"
|
||||||
|
|
||||||
[node name="小蜡烛" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="14"]
|
[node name="小蜡烛" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="14"]
|
||||||
|
@ -63,6 +63,14 @@ func _on_ground_ready() -> void:
|
|||||||
ball_game_boys_ambush.enabled = true
|
ball_game_boys_ambush.enabled = true
|
||||||
ball_game_boys_ambush.visible = true
|
ball_game_boys_ambush.visible = true
|
||||||
|
|
||||||
|
if $"../DeployLayer/Ambush小蝉偷看".played:
|
||||||
|
$"../DeployLayer/Ambush小蝉偷看".visible = false
|
||||||
|
|
||||||
|
# 小蝉偷看
|
||||||
|
func glimpse_hide_out():
|
||||||
|
$"../DeployLayer/Ambush小蝉偷看".visible = false
|
||||||
|
$"Sfx偷看关门".play()
|
||||||
|
|
||||||
|
|
||||||
func _on_mice_hole_interacted():
|
func _on_mice_hole_interacted():
|
||||||
mice_hole.enabled = false
|
mice_hole.enabled = false
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=49 format=3 uid="uid://cootarwb44vvh"]
|
[gd_scene load_steps=51 format=3 uid="uid://cootarwb44vvh"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_qkymk"]
|
[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://cbt0ubygchxvv" path="res://scene/ground/scene/c02/s06_animation.gd" id="2_4dg6u"]
|
||||||
@ -12,6 +12,7 @@
|
|||||||
[ext_resource type="AudioStream" uid="uid://cljr4g0sivpdh" path="res://asset/audio/sfx/交互/sfx_煤油灯点燃成功.wav" id="5_wywax"]
|
[ext_resource type="AudioStream" uid="uid://cljr4g0sivpdh" path="res://asset/audio/sfx/交互/sfx_煤油灯点燃成功.wav" id="5_wywax"]
|
||||||
[ext_resource type="Texture2D" uid="uid://b78jbthcfkod7" path="res://asset/art/scene/c02/s03_公寓一楼院子/地面物品反光/地反光3.png" id="6_vbvbc"]
|
[ext_resource type="Texture2D" uid="uid://b78jbthcfkod7" path="res://asset/art/scene/c02/s03_公寓一楼院子/地面物品反光/地反光3.png" id="6_vbvbc"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cw3q5pvciumil" path="res://scene/entity/interactable.tscn" id="7_0d746"]
|
[ext_resource type="PackedScene" uid="uid://cw3q5pvciumil" path="res://scene/entity/interactable.tscn" id="7_0d746"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://5jk88e0cncy8" path="res://asset/audio/sfx/交互/序章/04_书店内_关门.wav" id="7_7kxvk"]
|
||||||
[ext_resource type="Texture2D" uid="uid://f7yd3xpr1utp" path="res://asset/art/scene/c02/s06_二楼楼道/e_楼梯杂物堆.png" id="7_v3hjg"]
|
[ext_resource type="Texture2D" uid="uid://f7yd3xpr1utp" path="res://asset/art/scene/c02/s06_二楼楼道/e_楼梯杂物堆.png" id="7_v3hjg"]
|
||||||
[ext_resource type="Texture2D" uid="uid://b7uo33bdiwpl3" path="res://asset/art/scene/c02/s03_公寓一楼院子/地面物品反光/地反光4.png" id="8_7x2h6"]
|
[ext_resource type="Texture2D" uid="uid://b7uo33bdiwpl3" path="res://asset/art/scene/c02/s03_公寓一楼院子/地面物品反光/地反光4.png" id="8_7x2h6"]
|
||||||
[ext_resource type="SpriteFrames" uid="uid://blij4obvhb1vf" path="res://asset/art/gif/c02_公寓过道/c02_公寓过道_frames.tres" id="8_nh8we"]
|
[ext_resource type="SpriteFrames" uid="uid://blij4obvhb1vf" path="res://asset/art/gif/c02_公寓过道/c02_公寓过道_frames.tres" id="8_nh8we"]
|
||||||
@ -36,6 +37,7 @@
|
|||||||
[ext_resource type="PackedScene" uid="uid://ci5anaxsa1apl" path="res://scene/entity/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://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"]
|
[ext_resource type="Texture2D" uid="uid://ce3d785v5lxg2" path="res://asset/art/scene/c02/小蝉寻人启事/ux_寻人启事完整.png" id="34_3u30v"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://ca3km2f6ncrqo" path="res://asset/art/scene/c02/s06_二楼楼道/e_小蝉偷看.png" id="37_osg51"]
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_k01ve"]
|
[sub_resource type="Animation" id="Animation_k01ve"]
|
||||||
length = 0.001
|
length = 0.001
|
||||||
@ -866,6 +868,12 @@ bus = &"game_sfx"
|
|||||||
script = ExtResource("4_2e08x")
|
script = ExtResource("4_2e08x")
|
||||||
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
|
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
|
||||||
|
|
||||||
|
[node name="Sfx偷看关门" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="3"]
|
||||||
|
stream = ExtResource("7_7kxvk")
|
||||||
|
bus = &"game_sfx"
|
||||||
|
script = ExtResource("4_2e08x")
|
||||||
|
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
|
||||||
|
|
||||||
[node name="BGSprite2D" parent="Ground" index="1"]
|
[node name="BGSprite2D" parent="Ground" index="1"]
|
||||||
light_mask = 5
|
light_mask = 5
|
||||||
position = Vector2(0, -2)
|
position = Vector2(0, -2)
|
||||||
@ -1129,8 +1137,14 @@ texture = ExtResource("33_h3h1a")
|
|||||||
texture_cover = ExtResource("34_3u30v")
|
texture_cover = ExtResource("34_3u30v")
|
||||||
content_key = "c02_寻人启事_完整"
|
content_key = "c02_寻人启事_完整"
|
||||||
|
|
||||||
|
[node name="Ambush小蝉偷看" parent="Ground/DeployLayer" index="19" instance=ExtResource("14_k01ve")]
|
||||||
|
position = Vector2(553, -5)
|
||||||
|
texture = ExtResource("37_osg51")
|
||||||
|
collision_width_and_x = Vector2(150, 0)
|
||||||
|
hook_method = "glimpse_hide_out"
|
||||||
|
|
||||||
[node name="MainPlayer" parent="Ground" index="4"]
|
[node name="MainPlayer" parent="Ground" index="4"]
|
||||||
position = Vector2(650, 98)
|
position = Vector2(63, 95)
|
||||||
catty_light_energy = 0.5
|
catty_light_energy = 0.5
|
||||||
facing_direction = Vector2(1, 0)
|
facing_direction = Vector2(1, 0)
|
||||||
|
|
||||||
|
@ -18,14 +18,14 @@ func _ready() -> void:
|
|||||||
button.pressed.connect(_on_button_pressed)
|
button.pressed.connect(_on_button_pressed)
|
||||||
fail_time = Time.get_ticks_msec()
|
fail_time = Time.get_ticks_msec()
|
||||||
button.disabled = true
|
button.disabled = true
|
||||||
|
if not ArchiveManager.get_global_value("c02_meat_door_interacted", false):
|
||||||
|
ArchiveManager.set_global_entry("c02_meat_door_interacted", true)
|
||||||
DialogueManager.show_dialogue_balloon(dialogue, "c02_s03_敲门游戏intro")
|
DialogueManager.show_dialogue_balloon(dialogue, "c02_s03_敲门游戏intro")
|
||||||
await DialogueManager.dialogue_ended
|
await DialogueManager.dialogue_ended
|
||||||
if (
|
if ArchiveManager.get_global_value("c02_meat_given", false):
|
||||||
# not ArchiveManager.get_global_value("c02_eavesdrop_finished", false) or
|
# not ArchiveManager.get_global_value("c02_eavesdrop_finished", false) or
|
||||||
# ArchiveManager.get_global_value("c02_meat_dropping", false) or
|
# ArchiveManager.get_global_value("c02_meat_dropping", false) or
|
||||||
# 敲门成功,则禁用
|
# 敲门成功,则禁用
|
||||||
ArchiveManager.get_global_value("c02_meat_given", false)
|
|
||||||
):
|
|
||||||
button.disabled = true
|
button.disabled = true
|
||||||
else:
|
else:
|
||||||
button.disabled = false
|
button.disabled = false
|
||||||
|
@ -19,6 +19,7 @@ texture = ExtResource("2_eyynm")
|
|||||||
[node name="ContentInspector" parent="." instance=ExtResource("3_lpmq3")]
|
[node name="ContentInspector" parent="." instance=ExtResource("3_lpmq3")]
|
||||||
|
|
||||||
[node name="遮罩" type="TextureRect" parent="ContentInspector"]
|
[node name="遮罩" type="TextureRect" parent="ContentInspector"]
|
||||||
|
visible = false
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
|
@ -40,9 +40,6 @@ gravity = Vector3(0, 98, 0)
|
|||||||
scale_min = 0.35
|
scale_min = 0.35
|
||||||
scale_max = 0.4
|
scale_max = 0.4
|
||||||
scale_over_velocity_curve = SubResource("CurveTexture_jw8nx")
|
scale_over_velocity_curve = SubResource("CurveTexture_jw8nx")
|
||||||
collision_mode = 1
|
|
||||||
collision_friction = 0.5
|
|
||||||
collision_bounce = 0.0
|
|
||||||
|
|
||||||
[node name="BallsFalling" type="Node2D"]
|
[node name="BallsFalling" type="Node2D"]
|
||||||
y_sort_enabled = true
|
y_sort_enabled = true
|
||||||
|
@ -6,7 +6,6 @@ signal exit(success)
|
|||||||
@onready var pivot = $Pivot as Node2D
|
@onready var pivot = $Pivot as Node2D
|
||||||
@onready var hand_pivot = $Pivot/HandPivot as Node2D
|
@onready var hand_pivot = $Pivot/HandPivot as Node2D
|
||||||
@onready var label = %RichTextLabel as RichTextLabel
|
@onready var label = %RichTextLabel as RichTextLabel
|
||||||
@onready var audio_player = %AudioStreamPlayer as AudioStreamPlayer
|
|
||||||
|
|
||||||
# ogg文件:丢球(drop 地面明显碰撞声)+球碰球(hit 响亮)+细碎滚动声(loop)三个部分
|
# ogg文件:丢球(drop 地面明显碰撞声)+球碰球(hit 响亮)+细碎滚动声(loop)三个部分
|
||||||
@onready var sfx_hit = $SfxHit as Sfx
|
@onready var sfx_hit = $SfxHit as Sfx
|
||||||
@ -244,6 +243,7 @@ func game_win() -> void:
|
|||||||
print("game_win 弹珠游戏胜利")
|
print("game_win 弹珠游戏胜利")
|
||||||
# 0:默认 1:寻找弹珠(老虎钳可以换弹珠) 2:给出弹珠 3:游戏结束
|
# 0:默认 1:寻找弹珠(老虎钳可以换弹珠) 2:给出弹珠 3:游戏结束
|
||||||
ArchiveManager.set_global_entry("c02_ball_game_stage", 3)
|
ArchiveManager.set_global_entry("c02_ball_game_stage", 3)
|
||||||
|
%"Sfx结尾小孩跑".play()
|
||||||
# 弹珠雨
|
# 弹珠雨
|
||||||
$BallsFalling.emitting = true
|
$BallsFalling.emitting = true
|
||||||
pivot.visible = false
|
pivot.visible = false
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
[gd_scene load_steps=24 format=3 uid="uid://cjx7o685ox8c1"]
|
[gd_scene load_steps=25 format=3 uid="uid://cjx7o685ox8c1"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://c5s4giu182isu" path="res://scene/little_game/弹珠游戏/弹珠游戏.gd" id="1_p2trd"]
|
[ext_resource type="Script" uid="uid://c5s4giu182isu" path="res://scene/little_game/弹珠游戏/弹珠游戏.gd" id="1_p2trd"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://cra6rqbs6r1qd" path="res://asset/audio/sfx/旧版/child/小孩从近到远跑步.wav" id="2_aqxy0"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bvf8b057baglw" path="res://asset/art/little_game/弹珠/bg_弹珠游戏.png" id="2_bm1k0"]
|
[ext_resource type="Texture2D" uid="uid://bvf8b057baglw" path="res://asset/art/little_game/弹珠/bg_弹珠游戏.png" id="2_bm1k0"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bs4tp4amd1kkm" path="res://asset/art/little_game/弹珠/抱手.png" id="3_3kvx4"]
|
[ext_resource type="Texture2D" uid="uid://bs4tp4amd1kkm" path="res://asset/art/little_game/弹珠/抱手.png" id="3_3kvx4"]
|
||||||
[ext_resource type="AudioStream" uid="uid://bb6njoaxi2hbx" path="res://asset/audio/sfx/game/弹珠游戏/hit.ogg" id="3_co06r"]
|
[ext_resource type="AudioStream" uid="uid://bb6njoaxi2hbx" path="res://asset/audio/sfx/game/弹珠游戏/hit.ogg" id="3_co06r"]
|
||||||
@ -255,6 +256,13 @@ radius = 300.0
|
|||||||
[node name="弹珠游戏" type="CanvasLayer"]
|
[node name="弹珠游戏" type="CanvasLayer"]
|
||||||
script = ExtResource("1_p2trd")
|
script = ExtResource("1_p2trd")
|
||||||
|
|
||||||
|
[node name="Sfx结尾小孩跑" type="AudioStreamPlayer" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = ExtResource("2_aqxy0")
|
||||||
|
bus = &"game_sfx"
|
||||||
|
script = ExtResource("4_co06r")
|
||||||
|
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
|
||||||
|
|
||||||
[node name="TextureRect" type="TextureRect" parent="."]
|
[node name="TextureRect" type="TextureRect" parent="."]
|
||||||
z_index = -1
|
z_index = -1
|
||||||
offset_left = -4.0
|
offset_left = -4.0
|
||||||
@ -292,9 +300,6 @@ text = "[wave amp=10.0 freq=5.0][shake rate=4.0 level=3] 弹珠拿出来"
|
|||||||
fit_content = true
|
fit_content = true
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
|
|
||||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="MarginContainer"]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
|
|
||||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||||
libraries = {
|
libraries = {
|
||||||
&"": SubResource("AnimationLibrary_fk3jp")
|
&"": SubResource("AnimationLibrary_fk3jp")
|
||||||
|
@ -14,8 +14,27 @@ extends CanvasLayer
|
|||||||
@onready var gallery_btn = %GalleryBtn as Button
|
@onready var gallery_btn = %GalleryBtn as Button
|
||||||
|
|
||||||
# 音量 DB 偏移
|
# 音量 DB 偏移
|
||||||
var sfx_db_offset := 6.0
|
const sfx_db_offset := 6.0
|
||||||
var dialog_db_offset := -20.0
|
const dialog_db_offset := -10.0
|
||||||
|
|
||||||
|
|
||||||
|
static func _init() -> void:
|
||||||
|
AudioServer.set_bus_volume_db(
|
||||||
|
AudioServer.get_bus_index("Master"), GlobalConfigManager.config.db_master
|
||||||
|
)
|
||||||
|
AudioServer.set_bus_volume_db(
|
||||||
|
AudioServer.get_bus_index("game_sfx"), GlobalConfigManager.config.db_game_sfx
|
||||||
|
)
|
||||||
|
AudioServer.set_bus_volume_db(
|
||||||
|
AudioServer.get_bus_index("dialog"), GlobalConfigManager.config.db_dialog
|
||||||
|
)
|
||||||
|
if GlobalConfig.DEBUG:
|
||||||
|
prints(
|
||||||
|
"_init setup volume_db (master, sfx, dialog): ",
|
||||||
|
GlobalConfigManager.config.db_master,
|
||||||
|
GlobalConfigManager.config.db_game_sfx,
|
||||||
|
GlobalConfigManager.config.db_dialog
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
|