胖子游戏与结束演出调整

This commit is contained in:
cakipaul 2025-08-06 23:54:49 +08:00
parent 966ee0a368
commit 4a4549f29c
35 changed files with 560 additions and 139 deletions

View File

@ -167,16 +167,16 @@ animations = [{
"speed": 30.0
}, {
"frames": [{
"duration": 6.0,
"duration": 10.0,
"texture": ExtResource("1_iydkj")
}, {
"duration": 6.0,
"duration": 3.0,
"texture": ExtResource("2_sim85")
}, {
"duration": 6.0,
"duration": 3.0,
"texture": ExtResource("3_xdst7")
}],
"loop": true,
"name": &"砍桌子",
"speed": 30.0
"speed": 10.0
}]

View File

@ -1,11 +1,13 @@
[gd_resource type="SpriteFrames" load_steps=30 format=3 uid="uid://cay6bn3elw2we"]
[gd_resource type="SpriteFrames" load_steps=32 format=3 uid="uid://cay6bn3elw2we"]
[ext_resource type="Texture2D" uid="uid://um557l21w78m" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/0.png" id="1_y0wgn"]
[ext_resource type="Texture2D" uid="uid://b8wu67ifftltb" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/1.png" id="2_bhhdr"]
[ext_resource type="Texture2D" uid="uid://byctugr2xp3l6" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/2.png" id="3_qliiw"]
[ext_resource type="Texture2D" uid="uid://ckanwws8e2uc8" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/3.png" id="4_d5j5j"]
[ext_resource type="Texture2D" uid="uid://bussftn72ld3j" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/4.png" id="5_ny0qt"]
[ext_resource type="Texture2D" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/0.png" id="1_y0wgn"]
[ext_resource type="Texture2D" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/1.png" id="2_bhhdr"]
[ext_resource type="Texture2D" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/2.png" id="3_qliiw"]
[ext_resource type="Texture2D" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/3.png" id="4_d5j5j"]
[ext_resource type="Texture2D" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/4.png" id="5_ny0qt"]
[ext_resource type="Texture2D" uid="uid://bv6hdx4jyxxje" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/瘦子动画/0.png" id="6_lidiq"]
[ext_resource type="Texture2D" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/5.png" id="6_ysb2i"]
[ext_resource type="Texture2D" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/6.png" id="7_onlwn"]
[ext_resource type="Texture2D" uid="uid://fp02vc1vsora" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/瘦子动画/1.png" id="7_r41sx"]
[ext_resource type="Texture2D" uid="uid://bsak503ev0aeg" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/瘦子动画/2.png" id="8_y5alp"]
[ext_resource type="Texture2D" uid="uid://bh1hphpvv4aj4" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/瘦子动画/3.png" id="9_eiloc"]
@ -47,8 +49,14 @@ animations = [{
}, {
"duration": 6.0,
"texture": ExtResource("5_ny0qt")
}, {
"duration": 6.0,
"texture": ExtResource("6_ysb2i")
}, {
"duration": 6.0,
"texture": ExtResource("7_onlwn")
}],
"loop": false,
"loop": true,
"name": &"掉下来",
"speed": 30.0
}, {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 777 B

After

Width:  |  Height:  |  Size: 485 B

View File

@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://um557l21w78m"
uid="uid://nx85sv67fquy"
path="res://.godot/imported/0.png-738ec7029f655315530f9474e97f48af.ctex"
metadata={
"vram_texture": false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 375 B

After

Width:  |  Height:  |  Size: 834 B

View File

@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://b8wu67ifftltb"
uid="uid://c1gky0rn2e8ts"
path="res://.godot/imported/1.png-f89311fe887e318b9f958032712bc4bf.ctex"
metadata={
"vram_texture": false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 536 B

After

Width:  |  Height:  |  Size: 834 B

View File

@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://byctugr2xp3l6"
uid="uid://dbhahy0fsy0vg"
path="res://.godot/imported/2.png-43ad04e39127c3fff4d74432152757e5.ctex"
metadata={
"vram_texture": false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 619 B

After

Width:  |  Height:  |  Size: 428 B

View File

@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://ckanwws8e2uc8"
uid="uid://v33lw03ssck6"
path="res://.godot/imported/3.png-d760e5bb26a5b6440b955c8d53ae8654.ctex"
metadata={
"vram_texture": false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 767 B

After

Width:  |  Height:  |  Size: 589 B

View File

@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bussftn72ld3j"
uid="uid://d0pwwfg0hamba"
path="res://.godot/imported/4.png-d8b3820ac2b093a1bc71815372e0042f.ctex"
metadata={
"vram_texture": false

Binary file not shown.

After

Width:  |  Height:  |  Size: 672 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bjgmruu0tb1p4"
path="res://.godot/imported/5.png-6cbd53446d76b99924648d09b57dd48e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/5.png"
dest_files=["res://.godot/imported/5.png-6cbd53446d76b99924648d09b57dd48e.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 832 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bk0s2d576hrf7"
path="res://.godot/imported/6.png-2cc0c52f96a43cd170518cba245d8f57.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/6.png"
dest_files=["res://.godot/imported/6.png-2cc0c52f96a43cd170518cba245d8f57.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

View File

@ -33,7 +33,7 @@ c03_prison_lock: 0:初始化 1:打开
# 棺材房
c03_coffin: 0:初始化 1:拿走刀 2:拿走纸条_棺材怪演出 3:演出完成
# 绞肉机
c03_meat_grinder: 0:初始化 1:已装转盘 2:绞肉机演出 3:演出结束
c03_meat_grinder: 0:初始化 1:已装转盘 2:胖子游戏结束 3:绞肉机演出 4:演出结束
# 结尾井边演出
c03_well_show: 0:初始化 1:准备演出 2:演出完成
=> END

View File

@ -369,8 +369,9 @@
# s06 胖子卧室
没贴的寻人启事 [ID:c03_s06_没贴的寻人启事]
# s07 屠宰间
绑得很死,直接解不开绳子。 [ID:c03_s08_囚室绳子]
张文开...文开...{br}方...小蝉...{br}绞肉机... [ID:c03_s07_胖子游戏结束]
# s08 囚室
绑得很死,直接解不开绳子。 [ID:c03_s08_囚室绳子]
?这里是 [ID:c03_s08_囚室醒过来]
?又是脚印 [ID:c03_s08_囚室看到脚印]
妖物者,本自造化而生,具灵识,知求生,与万类本无别。人言有异,是以别之。 [ID:c03_s08_囚室符纸]

View File

@ -1,4 +1,4 @@
[gd_resource type="SpriteFrames" load_steps=1051 format=3 uid="uid://b7fhheih1hbvf"]
[gd_resource type="SpriteFrames" load_steps=1053 format=3 uid="uid://b7fhheih1hbvf"]
[ext_resource type="Texture2D" uid="uid://dvq64espa37lx" path="res://asset/art/animation/c00_吕萍_idle_left/zhhx1.png" id="1_ekv0l"]
[ext_resource type="Texture2D" uid="uid://dcp4gk5lib4bl" path="res://asset/art/animation/c00_吕萍_idle_left/zhhx2.png" id="2_fq076"]
@ -1005,16 +1005,16 @@
[ext_resource type="Texture2D" uid="uid://bx6nlvrn3iifs" path="res://asset/art/animation/c03_胖子_托小孩/1 (122).png" id="970_4td33"]
[ext_resource type="Texture2D" uid="uid://ddeuqr6awtlnf" path="res://asset/art/animation/c03_胖子_托小孩/1 (123).png" id="971_xc64a"]
[ext_resource type="Texture2D" uid="uid://cxlcsejc8kojo" path="res://asset/art/animation/c03_胖子_托小孩/1 (124).png" id="972_fff22"]
[ext_resource type="Texture2D" uid="uid://um557l21w78m" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/0.png" id="1006_ta2dh"]
[ext_resource type="Texture2D" uid="uid://nx85sv67fquy" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/0.png" id="1006_ta2dh"]
[ext_resource type="Texture2D" uid="uid://snptlmrbmeoq" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第四段/瘦子吃东西/0.png" id="1006_y1qej"]
[ext_resource type="Texture2D" uid="uid://b8wu67ifftltb" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/1.png" id="1007_b3oxo"]
[ext_resource type="Texture2D" uid="uid://c1gky0rn2e8ts" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/1.png" id="1007_b3oxo"]
[ext_resource type="Texture2D" uid="uid://drlnrh4g6djk4" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第四段/瘦子吃东西/1.png" id="1007_e3b0h"]
[ext_resource type="Texture2D" uid="uid://cphvnnc0nvv77" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第四段/瘦子吃东西/2.png" id="1008_3cpbr"]
[ext_resource type="Texture2D" uid="uid://byctugr2xp3l6" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/2.png" id="1008_ywyre"]
[ext_resource type="Texture2D" uid="uid://ckanwws8e2uc8" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/3.png" id="1009_3fbfp"]
[ext_resource type="Texture2D" uid="uid://dbhahy0fsy0vg" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/2.png" id="1008_ywyre"]
[ext_resource type="Texture2D" uid="uid://v33lw03ssck6" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/3.png" id="1009_3fbfp"]
[ext_resource type="Texture2D" uid="uid://b4onq8sds7isc" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第四段/瘦子吃东西/3.png" id="1009_4minp"]
[ext_resource type="Texture2D" uid="uid://drkmsb1xjposn" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第四段/瘦子吃东西/4.png" id="1010_1ycs5"]
[ext_resource type="Texture2D" uid="uid://bussftn72ld3j" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/4.png" id="1010_ek4fg"]
[ext_resource type="Texture2D" uid="uid://d0pwwfg0hamba" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/4.png" id="1010_ek4fg"]
[ext_resource type="Texture2D" uid="uid://bshj8w2v0qnaq" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第四段/瘦子吃东西/5.png" id="1011_1o500"]
[ext_resource type="Texture2D" uid="uid://dng8sbm17emf6" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第三段/从洞里爬出来动画/0.png" id="1011_hc76m"]
[ext_resource type="Texture2D" uid="uid://ch3puhkhsrshg" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/瘦子动画呼吸/0.png" id="1011_mi2dh"]
@ -1034,7 +1034,9 @@
[ext_resource type="Texture2D" uid="uid://cubrxfcfwo4pw" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/瘦子走路/2.png" id="1017_73bfk"]
[ext_resource type="Texture2D" uid="uid://d3e4r1nfhdse2" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/瘦子走路/3.png" id="1018_c1ua6"]
[ext_resource type="Texture2D" uid="uid://dsimasqr7vqw3" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第三段/从洞里爬出来动画/7.png" id="1018_o12ts"]
[ext_resource type="Texture2D" uid="uid://bjgmruu0tb1p4" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/5.png" id="1019_3cpbr"]
[ext_resource type="Texture2D" uid="uid://ck5xbfqvhfql2" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/瘦子走路/4.png" id="1019_ripmy"]
[ext_resource type="Texture2D" uid="uid://bk0s2d576hrf7" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/掉下来/6.png" id="1020_4minp"]
[ext_resource type="Texture2D" uid="uid://b6w81tk8quyh3" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/瘦子走路/5.png" id="1020_38kbn"]
[ext_resource type="Texture2D" uid="uid://bv6hdx4jyxxje" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/瘦子动画/0.png" id="1021_o12ts"]
[ext_resource type="Texture2D" uid="uid://fp02vc1vsora" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/瘦子动画/1.png" id="1022_y4xrk"]
@ -4722,14 +4724,20 @@ animations = [{
"duration": 1.0,
"texture": ExtResource("1007_b3oxo")
}, {
"duration": 6.0,
"duration": 1.0,
"texture": ExtResource("1008_ywyre")
}, {
"duration": 2.0,
"duration": 8.0,
"texture": ExtResource("1009_3fbfp")
}, {
"duration": 1.0,
"duration": 3.0,
"texture": ExtResource("1010_ek4fg")
}, {
"duration": 1.0,
"texture": ExtResource("1019_3cpbr")
}, {
"duration": 1.0,
"texture": ExtResource("1020_4minp")
}],
"loop": false,
"name": &"c03_胖子游戏_掉下来",

View File

@ -48,6 +48,8 @@ const CANVAS_LAYER_DIALOG = 22
const CANVAS_LAYER_UI = 21
# 道具 inspectorprop/local
const CANVAS_LAYER_PROP_INSPECTOR = 20
# 黑屏 转场效果
const CANVAS_LAYER_TRANSITION = 15
# ground loader 转场等 mask 层
const CANVAS_LAYER_GROUND_MASK = 14
# 特殊全屏效果(无 shading

View File

@ -120,7 +120,8 @@ func c02_exit_from_corridor() -> void:
func c03_final_choose_exit() -> void:
EventManager.set_stage_if_greater("c03_well_show", 2)
# 选择离开的话,不会更新 show stage 状态
# EventManager.set_stage_if_greater("c03_well_show", 2)
ArchiveManager.set_global_entry("has_exited_by_player_choice", true)
# 黑屏播放结束音效后回到主菜单
# 如果出公寓做过选择,此处就不出现选择

View File

@ -511,12 +511,27 @@ func show_black_hand(play_sfx := true, queue_free_delay := 0.0) -> void:
var transition_scene = preload("uid://7dxvwqm53ugh")
func black_transition(half_duration := 0.7, wait_time := 0.5) -> void:
func black_transition(half_duration := 0.7, wait_time := 0.5) -> CanvasLayer:
var scene = transition_scene.instantiate()
scene.name = "Transition"
await get_tree().process_frame
get_tree().current_scene.add_child(scene)
scene.run_effect(half_duration, wait_time)
return scene
func transition_with_layer(node: CanvasItem, half_duration := 0.7, wait_time := 0.5) -> void:
var transition_layer := await black_transition(half_duration, wait_time)
# 获得 node 的新 transform
var screen_transform = node.get_canvas_transform() * node.get_global_transform()
var new_global_transform = transition_layer.transform.affine_inverse() * screen_transform
if GlobalConfig.DEBUG:
print("transition_with_layer screen_transform: ", screen_transform, "new_global_transform:", new_global_transform)
node.reparent(transition_layer, false)
node.global_position = new_global_transform.origin
var tween = create_tween()
tween.tween_interval(half_duration + wait_time)
tween.tween_property(node, "modulate:a", 0.0, half_duration)
func white_transition(half_duration := 0.7, wait_time := 0.5) -> void:

View File

@ -204,7 +204,7 @@ var ANIMATION_CONFIG = {
# 此处为[2][3]分别为 sprite 向左、向右时的 offset
MOVEMENT_WALKING: [&"", &"c03_胖子游戏_瘦子走"],
MOVEMENT_RUNNING: [&"", &"c03_胖子游戏_瘦子跑"],
5: [&"c03_胖子游戏_掉下来", Vector2.ONE, Vector2(0, -51.0)],
5: [&"c03_胖子游戏_掉下来", Vector2.ONE, Vector2(0, -108.0)],
6: [&"c03_胖子游戏_洞里爬出来", Vector2.ONE, Vector2(-70, -44.5)],
7: [&"", Vector2.ONE, Vector2(0, -51.0), &"", &"c03_胖子游戏_胖子对半砍"],
8: [&"", Vector2.ONE, Vector2(0, -51.0), &"", &"c03_胖子游戏_吃东西"],

View File

@ -2,7 +2,7 @@ extends CanvasLayer
func _ready() -> void:
layer = GlobalConfig.CANVAS_LAYER_EFFECT
layer = GlobalConfig.CANVAS_LAYER_TRANSITION
func run_effect(half_duration := 0.7, wait_time := 0.5, color := Color.BLACK):

View File

@ -3,6 +3,7 @@
[ext_resource type="Script" uid="uid://cc1qaqhljieir" path="res://scene/effect/黑屏转场.gd" id="1_far56"]
[node name="黑屏转场" type="CanvasLayer"]
layer = 15
script = ExtResource("1_far56")
[node name="ColorRect" type="ColorRect" parent="."]

View File

@ -27,7 +27,7 @@ func _setup_node_reference() -> void:
func _on_ground_ready() -> void:
monster = $"../DeployLayer/棺材怪切肉"
closeup绞肉机.exit.connect(_on_grinder_exited)
# c03_meat_grinder: 0:初始化 1:已装转盘 2:绞肉机演出 3:演出结束
# c03_meat_grinder: 0:初始化 1:已装转盘 2:胖子游戏结束 3:绞肉机演出 4:演出结束
var grinder_stage = EventManager.get_stage("c03_meat_grinder")
if grinder_stage == 1:
_transport_to_the_fatty_story()
@ -59,4 +59,6 @@ func _setup_monster_chopping() -> void:
func _on_monster_chopping_animation_looped() -> void:
# if monster.animation == "砍桌子":
SceneManager.get_camera_marker().shake_camera(1.5)
if monster.position.x > -100.0:
var strength := 1.5 * smoothstep(-100.0, 100.0, monster.position.x)
SceneManager.get_camera_marker().shake_camera(strength)

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=28 format=3 uid="uid://c67732f2we13j"]
[gd_scene load_steps=30 format=3 uid="uid://c67732f2we13j"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_oxs1j"]
[ext_resource type="Script" uid="uid://dh5vxhnfnua3q" path="res://scene/ground/scene/c03/s07_屠宰间.gd" id="2_oxs1j"]
@ -22,6 +22,8 @@
[ext_resource type="PackedScene" uid="uid://dqkxiqbq83cmq" path="res://scene/entity/closeup.tscn" id="14_48a3r"]
[ext_resource type="PackedScene" uid="uid://5bubirvt8ep8" path="res://scene/ground/script/c03/s07_closeup绞肉机.tscn" id="15_48a3r"]
[ext_resource type="Script" uid="uid://0wjaho6qkg6s" path="res://manager/event_manager/event_binder.gd" id="17_e1lvl"]
[ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="18_5t01v"]
[ext_resource type="SpriteFrames" uid="uid://b0icyhxpj16tv" path="res://asset/art/gif/c02_谢幕演出/c02_谢幕演出_frames.tres" id="19_2kdsp"]
[ext_resource type="AudioStream" uid="uid://be6xihynmvrwj" path="res://asset/audio/sfx/交互/第一章/谢幕演出_耳鸣加笑声.ogg" id="20_jjxk1"]
[ext_resource type="Texture2D" uid="uid://cylsq5cvhlp18" path="res://asset/art/tool/point_light.png" id="21_qeidq"]
[ext_resource type="Script" uid="uid://deysfedtyjlig" path="res://scene/ground/script/c03/s07_event胖子游戏结束演出.gd" id="22_fuomw"]
@ -124,6 +126,7 @@ original_texture = ExtResource("9_jfgnj")
metadata/_custom_type_script = "uid://dt8cfnm2og4h"
[node name="棺材怪切肉" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="6"]
visible = false
z_index = 9
position = Vector2(318, 30)
sprite_frames = ExtResource("8_isumy")
@ -138,6 +141,8 @@ action_configs = Array[Dictionary]([{
}])
move_configs = Array[Dictionary]([{
"animation": "棺材怪走路",
"animation_next": "",
"duration": 1e+07,
"movement_x": -1000.0,
"velocity": Vector2(-60, 0)
}])
@ -153,14 +158,27 @@ bus = &"game_sfx"
script = ExtResource("10_bxi12")
metadata/_custom_type_script = "uid://wapo47a1oddf"
[node name="Event胖子游戏结束演出" type="Node2D" parent="Ground/DeployLayer" index="7"]
[node name="Ambush小蝉消失" parent="Ground/DeployLayer" index="7" instance=ExtResource("18_5t01v")]
visible = false
position = Vector2(500, 55)
enter_affected_by_visibility = true
[node name="Pro绞肉机后的小蝉" type="AnimatedSprite2D" parent="Ground/DeployLayer/Ambush小蝉消失"]
position = Vector2(-49, 4)
sprite_frames = ExtResource("19_2kdsp")
animation = &"小婵呼吸"
autoplay = "小婵呼吸"
script = ExtResource("23_u2kpr")
metadata/_custom_type_script = "uid://cphfob11f7atx"
[node name="Event胖子游戏结束演出" type="Node2D" parent="Ground/DeployLayer" index="8"]
script = ExtResource("22_fuomw")
event_name = &"c03_meat_grinder"
event_stages = Array[int]([2])
metadata/_custom_type_script = "uid://bkkiyk5jkdw4d"
[node name="Sfx2D小蝉笑声" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/Event胖子游戏结束演出"]
position = Vector2(432, 0)
position = Vector2(462, 41)
stream = ExtResource("20_jjxk1")
max_distance = 1000.0
bus = &"game_sfx"
@ -173,7 +191,7 @@ color = Color(0.940296, 0.960906, 0.986459, 1)
energy = 0.6
texture = ExtResource("21_qeidq")
[node name="长桌" type="Sprite2D" parent="Ground/DeployLayer" index="8"]
[node name="长桌" type="Sprite2D" parent="Ground/DeployLayer" index="9"]
z_index = 10
position = Vector2(345, 88)
texture = ExtResource("7_es8d4")
@ -182,17 +200,18 @@ texture = ExtResource("7_es8d4")
position = Vector2(72, -33.5)
texture = ExtResource("8_thx4k")
[node name="Closeup绞肉机" parent="Ground/DeployLayer" index="9" instance=ExtResource("14_48a3r")]
[node name="Closeup绞肉机" parent="Ground/DeployLayer" index="10" instance=ExtResource("14_48a3r")]
unique_name_in_owner = true
position = Vector2(415, 44)
position = Vector2(415, 48)
packed_scene = ExtResource("15_48a3r")
transition_effect = true
action_key = 3
[node name="EventBinder" type="Node" parent="Ground/DeployLayer/Closeup绞肉机"]
script = ExtResource("17_e1lvl")
updater_event = &"c03_meat_grinder"
updater_stage_mode = "exclude"
updater_stages = Array[int]([3])
updater_stages = Array[int]([4])
metadata/_custom_type_script = "uid://0wjaho6qkg6s"
[node name="MainPlayer" parent="Ground" index="5"]
@ -201,8 +220,6 @@ catty_light_energy = 0.5
player_movement_rect = Rect2(18, -158, 714, 316)
facing_direction = Vector2(1, 0)
[node name="AudioListener2D" type="AudioListener2D" parent="Ground/MainPlayer" index="6"]
[node name="CameraFocusMarker" parent="Ground" index="6"]
limit_right = 750

View File

@ -45,7 +45,7 @@ func _on_ground_ready() -> void:
_enter_scene()
# 设置相机范围
var right_x = player.player_movement_rect.size.x
var rect := Rect2i(0, -158, int(right_x) + 50, 316)
var rect := Rect2i(0, -158, int(right_x) + 200, 316)
SceneManager.get_camera_marker().apply_limits(rect)
monster.before_restart.connect(_on_monster_restart)
@ -53,7 +53,7 @@ func _on_ground_ready() -> void:
#0: 初始化; 1-3 三关
var current_stage := 0
var aiming_duration := 1.8
var aiming_duration := 2.5
# 1.0s 一次
func _on_chop_timer_timeout() -> void:
@ -72,11 +72,11 @@ func _on_chop_timer_timeout() -> void:
var next_x = player_pos.x + player.velocity.x * aiming_duration + randf_range(10.0, 50.0)
monster_target.global_position.x = clampf(next_x, s_range.x, s_range.y)
await Util.wait(0.5)
next_x = player_pos.x + player.velocity.x * aiming_duration + sign(player.velocity.x) * randf_range(0.0, 40.0)
next_x = player_pos.x + player.velocity.x * aiming_duration # + sign(player.velocity.x) * randf_range(0.0, 40.0)
monster_target.global_position.x = clampf(next_x, s_range.x, s_range.y)
elif current_stage == 3:
# 越来越快
aiming_duration = clampf(aiming_duration - 0.1, 1.2, 3.0)
aiming_duration = clampf(aiming_duration - 0.1, 2.0, 3.0)
chop_timer.wait_time = aiming_duration + 0.5
monster.chop_right(aiming_duration)
var next_x = player_pos.x + player.velocity.x * aiming_duration + randf_range(0.0, 50.0)
@ -84,6 +84,9 @@ func _on_chop_timer_timeout() -> void:
await Util.wait(0.5)
next_x = player_pos.x + player.velocity.x * aiming_duration + randf_range(-20.0, 20.0)
monster_target.global_position.x = clampf(next_x, s_range.x, s_range.y)
await Util.wait(0.5)
next_x = player_pos.x + player.velocity.x * aiming_duration + randf_range(-20.0, 20.0)
monster_target.global_position.x = clampf(next_x, s_range.x, s_range.y)
if GlobalConfig.DEBUG:
print("棺材怪 chop next_x=", monster_target.global_position.x, "s_range=", s_range)
@ -107,8 +110,10 @@ func drop_meat_hill_2() -> void:
monster.mute = false
monster_target.global_position.x = range_of_stages[1].x + 300.0
monster.refresh_position()
var monster_light = monster.get_node("PointLight2D怪光") as PointLight2D
var tween = create_tween()
tween.tween_property(monster, "self_modulate:a", 1.0, 1.0)
tween.parallel().tween_property(monster_light, "energy", 1.0, 1.0)
tween.tween_callback(func():
current_stage = 2
)
@ -121,8 +126,11 @@ func drop_meat_hill_3() -> void:
_drop_meat_hill()
# 进入第三关: 动态隐藏砍
# monster.mute = false
var monster_light = monster.get_node("PointLight2D怪光") as PointLight2D
var tween = create_tween()
tween.tween_property(monster, "self_modulate:a", 0.0, 1.0)
tween.tween_property(monster_light, "energy", 0.0, 1.0)
tween.tween_callback(func(): monster_light.blend_mode = Light2D.BLEND_MODE_SUB)
tween.tween_property(monster_light, "energy", 0.4, 1.0)
tween.tween_callback(func():
monster_target.global_position.x = range_of_stages[2].x + 300.0
monster.refresh_position()
@ -169,7 +177,7 @@ func _enter_scene() -> void:
return
player.global_position.x = portal_x
SceneManager.lock_player(0, 5, true)
SceneManager.pause_and_hide_player_sprite(1.5)
SceneManager.pause_and_hide_player_sprite(4.5)
await player.animation_finished
SceneManager.unlock_player()

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=37 format=3 uid="uid://clgwc3jcqarpe"]
[gd_scene load_steps=38 format=3 uid="uid://clgwc3jcqarpe"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_0c2p2"]
[ext_resource type="Script" uid="uid://cs4ddcjq81c1d" path="res://scene/ground/scene/c03/s10_胖子游戏1.gd" id="2_tthij"]
@ -31,6 +31,7 @@
[ext_resource type="FontFile" uid="uid://bnxdsxp7dst7f" path="res://asset/font/锐字太空混元像素简繁-闪 超黑_mianfeiziti.com.ttf" id="19_usr2w"]
[ext_resource type="Texture2D" uid="uid://cylsq5cvhlp18" path="res://asset/art/tool/point_light.png" id="20_4gg56"]
[ext_resource type="Texture2D" uid="uid://0qkxvm0xiubu" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/落点2.png" id="20_whxhi"]
[ext_resource type="SpriteFrames" uid="uid://dy8b8dmgv3mdd" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第二段/c03_胖子游戏第二段_frames.tres" id="21_4bvrv"]
[sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"]
@ -56,7 +57,7 @@ stream_2/stream = ExtResource("10_js8ld")
stream_3/stream = ExtResource("10_js8ld")
[node name="S10" type="Node2D"]
metadata/_edit_horizontal_guides_ = [98.0, 120.0]
metadata/_edit_horizontal_guides_ = [98.0, 120.0, -120.0]
[node name="Ground" parent="." instance=ExtResource("1_0c2p2")]
scene_name = "c03_s10"
@ -92,15 +93,17 @@ light_mask = 5
offset = Vector2(0, -158)
[node name="装饰手" type="Sprite2D" parent="Ground/BGSprite2D" index="0"]
light_mask = 1027
position = Vector2(935, 60)
texture = ExtResource("16_bm1fy")
[node name="装饰手2" type="Sprite2D" parent="Ground/BGSprite2D" index="1"]
light_mask = 1027
position = Vector2(1318, 58)
texture = ExtResource("17_f57cq")
[node name="portal_left" parent="Ground/DeployLayer" index="0"]
position = Vector2(77, 11)
position = Vector2(202, 15)
[node name="portal_right" parent="Ground/DeployLayer" index="1"]
position = Vector2(8170, 31)
@ -261,22 +264,115 @@ position = Vector2(7618, 9)
wait_time = 2.5
autostart = true
[node name="被砍断的文字" type="RichTextLabel" parent="Ground/DeployLayer" index="20"]
offset_left = 658.0
offset_top = -22.0
offset_right = 966.0
offset_bottom = -1.0
[node name="老太太文字" type="RichTextLabel" parent="Ground/DeployLayer" index="20"]
custom_minimum_size = Vector2(1000, 0)
offset_left = 126.0
offset_top = -70.0
offset_right = 1126.0
offset_bottom = -29.0
theme_override_colors/default_color = Color(1, 0, 0, 1)
theme_override_fonts/normal_font = ExtResource("19_usr2w")
theme_override_font_sizes/normal_font_size = 20
theme_override_font_sizes/normal_font_size = 40
bbcode_enabled = true
text = "[wave]文字文字文字文字[/wave]"
text = "[wave]当兵去,当兵饿不死[/wave]"
fit_content = true
scroll_active = false
horizontal_alignment = 1
[node name="PointLight2D2" type="PointLight2D" parent="Ground/AmbientLayer" index="0"]
position = Vector2(201, -184)
energy = 0.5
[node name="Control" type="Control" parent="Ground/DeployLayer" index="21"]
layout_mode = 3
anchors_preset = 0
offset_left = 1563.0
offset_top = -47.0
offset_right = 1603.0
offset_bottom = -7.0
[node name="被砍断的文字1" type="RichTextLabel" parent="Ground/DeployLayer/Control"]
custom_minimum_size = Vector2(200, 0)
offset_left = -206.0
offset_top = -18.0
offset_right = -6.0
offset_bottom = 23.0
theme_override_colors/default_color = Color(1, 0, 0, 1)
theme_override_fonts/normal_font = ExtResource("19_usr2w")
theme_override_font_sizes/normal_font_size = 40
bbcode_enabled = true
text = "[wave]活[/wave]"
fit_content = true
scroll_active = false
horizontal_alignment = 2
metadata/_edit_use_anchors_ = true
[node name="被砍断的文字2" type="RichTextLabel" parent="Ground/DeployLayer/Control"]
custom_minimum_size = Vector2(200, 0)
offset_left = 4.0
offset_top = -17.0
offset_right = 204.0
offset_bottom = 24.0
theme_override_colors/default_color = Color(1, 0, 0, 1)
theme_override_fonts/normal_font = ExtResource("19_usr2w")
theme_override_font_sizes/normal_font_size = 40
bbcode_enabled = true
text = "[wave]着[/wave]"
fit_content = true
scroll_active = false
[node name="结尾文字" type="RichTextLabel" parent="Ground/DeployLayer" index="22"]
custom_minimum_size = Vector2(1000, 0)
offset_left = 7302.0
offset_top = -71.0
offset_right = 8302.0
offset_bottom = -30.0
theme_override_colors/default_color = Color(1, 0, 0, 1)
theme_override_fonts/normal_font = ExtResource("19_usr2w")
theme_override_font_sizes/normal_font_size = 40
bbcode_enabled = true
text = "[wave]把他抓回来[/wave]"
fit_content = true
scroll_active = false
horizontal_alignment = 1
[node name="PointLight2D结尾文字" type="PointLight2D" parent="Ground/DeployLayer/结尾文字"]
position = Vector2(835, 78)
range_layer_min = -5
texture = ExtResource("20_4gg56")
texture_scale = 2.0
texture_scale = 1.1
[node name="洞口的手2" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="23"]
z_index = -1
position = Vector2(8091, 31)
sprite_frames = ExtResource("21_4bvrv")
animation = &"小手"
autoplay = "小手"
speed_scale = 1.1
[node name="洞口的手" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="24"]
z_index = 9
position = Vector2(8155, 35)
sprite_frames = ExtResource("21_4bvrv")
animation = &"小手"
autoplay = "小手"
[node name="PointLight2D老奶" type="PointLight2D" parent="Ground/AmbientLayer" index="0"]
position = Vector2(622, 19)
range_layer_min = -5
range_item_cull_mask = 3072
texture = ExtResource("20_4gg56")
[node name="PointLight2D老奶2" type="PointLight2D" parent="Ground/AmbientLayer" index="1"]
position = Vector2(617, 60)
range_layer_min = -5
range_item_cull_mask = 7168
texture = ExtResource("20_4gg56")
texture_scale = 0.5
[node name="PointLight2D手" type="PointLight2D" parent="Ground/AmbientLayer" index="2"]
position = Vector2(1134, 108)
energy = 1.7
range_layer_min = -5
range_item_cull_mask = 5120
texture = ExtResource("20_4gg56")
texture_scale = 1.2
[node name="MainPlayer" parent="Ground" index="5"]
position = Vector2(396, 98)
@ -284,13 +380,6 @@ character = "胖子游戏"
player_movement_rect = Rect2(30, -158, 8170, 316)
facing_direction = Vector2(1, 0)
[node name="RemoteTransform2D" type="RemoteTransform2D" parent="Ground/MainPlayer" index="6"]
position = Vector2(-1, -48)
remote_path = NodePath("../../DeployLayer/MonsterMoveTarget")
update_position = false
update_rotation = false
update_scale = false
[node name="BGParallaxLayer" parent="Ground/ParallaxForeground" index="0"]
motion_scale = Vector2(0.9, 1)
@ -304,7 +393,7 @@ texture = ExtResource("6_hno1l")
offset = Vector2(0, 50)
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
points = PackedVector2Array(30, 150, 8200, 151)
points = PackedVector2Array(30, 150, 8162, 151)
[node name="DirectionalLight2D" parent="Ground" index="8"]
energy = 0.4
@ -320,16 +409,34 @@ motion_scale = Vector2(0.3, 1)
motion_mirroring = Vector2(1200, 0)
[node name="Sprite2D" type="Sprite2D" parent="Ground/ParallaxBackground/底图"]
light_mask = 1025
texture = ExtResource("5_a608f")
[node name="PointLight2D底" type="PointLight2D" parent="Ground/ParallaxBackground/底图"]
position = Vector2(282, -53)
energy = 0.5
range_layer_min = -5
range_item_cull_mask = 1024
texture = ExtResource("20_4gg56")
texture_scale = 1.1
[node name="后山" type="ParallaxLayer" parent="Ground/ParallaxBackground"]
z_index = -10
motion_scale = Vector2(0.5, 1)
motion_mirroring = Vector2(1134, 0)
[node name="Sprite2D" type="Sprite2D" parent="Ground/ParallaxBackground/后山"]
light_mask = 2049
texture = ExtResource("6_x0t6p")
[node name="PointLight2D底_后" type="PointLight2D" parent="Ground/ParallaxBackground/后山"]
position = Vector2(205, -87)
energy = 0.3
range_layer_min = -5
range_item_cull_mask = 3072
texture = ExtResource("20_4gg56")
texture_scale = 0.8
[node name="前山" type="ParallaxLayer" parent="Ground/ParallaxBackground"]
z_index = -10
position = Vector2(0, 16)
@ -337,8 +444,16 @@ motion_scale = Vector2(0.8, 1)
motion_mirroring = Vector2(1200, 0)
[node name="Sprite2D" type="Sprite2D" parent="Ground/ParallaxBackground/前山"]
light_mask = 4097
texture = ExtResource("7_8s7iq")
[node name="PointLight2D底_后_前" type="PointLight2D" parent="Ground/ParallaxBackground/前山"]
position = Vector2(307, -141)
energy = 0.3
range_layer_min = -5
range_item_cull_mask = 7168
texture = ExtResource("20_4gg56")
[node name="CanvasLayer" type="CanvasLayer" parent="Ground"]
layer = -2
follow_viewport_enabled = true
@ -411,6 +526,14 @@ scale = Vector2(1e-05, 1e-05)
remote_path = NodePath("../../../DeployLayer/落点右")
update_rotation = false
[node name="PointLight2D怪光" type="PointLight2D" parent="Ground/CanvasLayer/胖子游戏棺材怪"]
position = Vector2(13, -19)
energy = 0.0
range_layer_min = -5
range_item_cull_mask = 7168
texture = ExtResource("20_4gg56")
texture_scale = 3.0
[node name="ParallaxBackground2" type="ParallaxBackground" parent="Ground"]
layer = -1

View File

@ -15,13 +15,19 @@ func _ready() -> void:
#region node_reference
var collapse_sprite: AnimatedSprite2D
var final_meat_ambush: Ambush2D
var final_meat_sprite: AnimatedSprite2D
var final_label
#endregion
# 读取设置变量名
func _setup_node_reference() -> void:
collapse_sprite = $"../ParallaxBackground2/山前地后/小孩山塌了"
final_meat_ambush = $"../DeployLayer/Ambush最终吃肉"
final_meat_sprite = $"../DeployLayer/Ambush最终吃肉/Pro吃肉"
final_label = $"../CanvasLayer/最终吃肉"
func _on_ground_ready() -> void:
# 设置相机范围
@ -56,19 +62,22 @@ func _on_eat_meat_triggered(node) -> void:
func eat_meat() -> void:
final_meat_ambush.enabled = false
var light_pivot = $"../DeployLayer/LightPivot"
SceneManager.lock_player()
$"../DeployLayer/Ambush最终吃肉".enabled = false
var x = $"../DeployLayer/Pro吃肉".global_position.x
var x = final_meat_sprite.global_position.x
await SceneManager.get_player().walk_to_x(x).finished
# 第一帧没有瘦子,后面才有
var player = SceneManager.get_player() as MainPlayer
player.reparent_light(light_pivot)
play("eat_meat")
await animation_finished
SceneManager.unlock_player()
# c03_meat_grinder: 0:初始化 1:已装转盘 2:绞肉机演出 3:演出结束
# TODO 将 final_label 放置到 transition_layer
SceneManager.transition_with_layer(final_label, 2.0, 4.0)
await Util.wait(5.0)
# c03_meat_grinder: 0:初始化 1:已装转盘 2:胖子游戏结束 3:绞肉机演出 4:演出结束
EventManager.set_stage_if_greater("c03_meat_grinder", 2)
SceneManager.unlock_player()
SceneManager.get_ground_loader().transition_to_scene("c03_s07", "2")
@ -78,3 +87,6 @@ func collapse() -> void:
$"Sfx山塌了".play()
#TODO
SceneManager.pop_debug_dialog_info("音效", "山塌了")
# 交互之后,启用 final_meat_ambush
final_meat_ambush.enabled = true

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=23 format=3 uid="uid://cxabqg87g4vxc"]
[gd_scene load_steps=24 format=3 uid="uid://cxabqg87g4vxc"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_ly8ge"]
[ext_resource type="Script" uid="uid://f4uampm47832" path="res://scene/ground/scene/c03/s12_胖子游戏3.gd" id="2_c01lu"]
@ -16,6 +16,7 @@
[ext_resource type="Texture2D" uid="uid://da80qq8jl8mtp" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/肉块1.png" id="11_y18rp"]
[ext_resource type="Texture2D" uid="uid://bieyil13hhemh" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/肉块2.png" id="12_mr0pm"]
[ext_resource type="Texture2D" uid="uid://g3ohxmylc316" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/肉块3.png" id="13_47wdn"]
[ext_resource type="Texture2D" uid="uid://cylsq5cvhlp18" path="res://asset/art/tool/point_light.png" id="13_vyyx8"]
[ext_resource type="Texture2D" uid="uid://2hvfbno7wgjl" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/肉块4.png" id="14_vyyx8"]
[ext_resource type="Texture2D" uid="uid://85unc5qju4kl" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/肉块5.png" id="15_7x1vi"]
@ -36,7 +37,7 @@ tracks/0/keys = {
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("DeployLayer/Pro吃肉:frame")
tracks/1/path = NodePath("DeployLayer/Ambush最终吃肉/Pro吃肉:frame")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
@ -77,7 +78,7 @@ tracks/0/keys = {
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("DeployLayer/Pro吃肉:frame")
tracks/1/path = NodePath("DeployLayer/Ambush最终吃肉/Pro吃肉:frame")
tracks/1/interp = 1
tracks/1/loop_wrap = false
tracks/1/keys = {
@ -108,7 +109,7 @@ _data = {
[sub_resource type="RectangleShape2D" id="RectangleShape2D_y18rp"]
[node name="S12" type="Node2D"]
metadata/_edit_horizontal_guides_ = [-627.0, 103.0]
metadata/_edit_horizontal_guides_ = [-627.0, 103.0, 63.0]
[node name="Ground" parent="." instance=ExtResource("1_ly8ge")]
scene_name = "c03_s12"
@ -147,18 +148,9 @@ offset = Vector2(0, -158)
position = Vector2(69, 21)
[node name="portal_right" parent="Ground/DeployLayer" index="1"]
position = Vector2(4013, -30)
position = Vector2(4346, 37)
[node name="Pro吃肉" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="2"]
position = Vector2(3647, 95)
sprite_frames = ExtResource("10_7x1vi")
animation = &"爬绞肉机最终的"
offset = Vector2(88, -105)
script = ExtResource("9_vyyx8")
autostart = false
metadata/_custom_type_script = "uid://cphfob11f7atx"
[node name="Ambush肉1" parent="Ground/DeployLayer" index="3" instance=ExtResource("11_sul0a")]
[node name="Ambush肉1" parent="Ground/DeployLayer" index="2" instance=ExtResource("11_sul0a")]
position = Vector2(923, 85)
texture = ExtResource("14_vyyx8")
offset = Vector2(13, 0)
@ -172,7 +164,21 @@ collision_mask = 0
[node name="CollisionShape2D" type="CollisionShape2D" parent="Ground/DeployLayer/Ambush肉1/StaticBody2D"]
shape = SubResource("RectangleShape2D_y18rp")
[node name="Ambush肉2" parent="Ground/DeployLayer" index="4" instance=ExtResource("11_sul0a")]
[node name="Label" type="RichTextLabel" parent="Ground/DeployLayer/Ambush肉1"]
custom_minimum_size = Vector2(1000, 0)
offset_left = -474.0
offset_top = -169.0
offset_right = 526.0
offset_bottom = -128.0
theme_override_colors/default_color = Color(1, 0, 0, 1)
theme_override_fonts/normal_font = ExtResource("11_mr0pm")
theme_override_font_sizes/normal_font_size = 40
bbcode_enabled = true
text = "[wave]太瘦弱会被吃掉的![/wave]"
fit_content = true
horizontal_alignment = 1
[node name="Ambush肉2" parent="Ground/DeployLayer" index="3" instance=ExtResource("11_sul0a")]
position = Vector2(1443, 84)
texture = ExtResource("12_mr0pm")
offset = Vector2(20, 0)
@ -186,7 +192,21 @@ collision_mask = 0
[node name="CollisionShape2D" type="CollisionShape2D" parent="Ground/DeployLayer/Ambush肉2/StaticBody2D"]
shape = SubResource("RectangleShape2D_y18rp")
[node name="Ambush肉3" parent="Ground/DeployLayer" index="5" instance=ExtResource("11_sul0a")]
[node name="Label" type="RichTextLabel" parent="Ground/DeployLayer/Ambush肉2"]
custom_minimum_size = Vector2(500, 0)
offset_left = -204.0
offset_top = -166.0
offset_right = 296.0
offset_bottom = -125.0
theme_override_colors/default_color = Color(1, 0, 0, 1)
theme_override_fonts/normal_font = ExtResource("11_mr0pm")
theme_override_font_sizes/normal_font_size = 40
bbcode_enabled = true
text = "[wave]不够...还不够...[/wave]"
fit_content = true
horizontal_alignment = 1
[node name="Ambush肉3" parent="Ground/DeployLayer" index="4" instance=ExtResource("11_sul0a")]
position = Vector2(2016, 85)
texture = ExtResource("15_7x1vi")
offset = Vector2(37, 0)
@ -201,43 +221,110 @@ collision_mask = 0
[node name="CollisionShape2D" type="CollisionShape2D" parent="Ground/DeployLayer/Ambush肉3/StaticBody2D"]
shape = SubResource("RectangleShape2D_y18rp")
[node name="Ambush最终吃肉" parent="Ground/DeployLayer" index="6" instance=ExtResource("11_sul0a")]
position = Vector2(3639, 54)
[node name="回不了头" type="RichTextLabel" parent="Ground/DeployLayer/Ambush肉3"]
custom_minimum_size = Vector2(500, 0)
offset_left = -232.0
offset_top = -165.0
offset_right = 268.0
offset_bottom = -124.0
theme_override_colors/default_color = Color(1, 0, 0, 1)
theme_override_fonts/normal_font = ExtResource("11_mr0pm")
theme_override_font_sizes/normal_font_size = 40
bbcode_enabled = true
text = "[wave]活着[/wave]"
fit_content = true
horizontal_alignment = 1
[node name="Ambush最终吃肉" parent="Ground/DeployLayer" index="5" instance=ExtResource("11_sul0a")]
position = Vector2(4000, 54)
sign_mark_offset = Vector2(39, -9)
enabled = false
trigger_mode = "interact"
one_shot = false
hook_method = "eat_meat"
[node name="Ambush小孩山塌了" parent="Ground/DeployLayer" index="7" instance=ExtResource("11_sul0a")]
position = Vector2(3016, -7)
sign_mark_offset = Vector2(39, -9)
[node name="Pro吃肉" type="AnimatedSprite2D" parent="Ground/DeployLayer/Ambush最终吃肉"]
position = Vector2(8, 41)
sprite_frames = ExtResource("10_7x1vi")
animation = &"爬绞肉机最终的"
offset = Vector2(88, -105)
script = ExtResource("9_vyyx8")
autostart = false
metadata/_custom_type_script = "uid://cphfob11f7atx"
[node name="Ambush小孩山塌了" parent="Ground/DeployLayer" index="6" instance=ExtResource("11_sul0a")]
position = Vector2(2981, 32)
trigger_mode = "interact"
one_shot = false
hook_method = "collapse"
[node name="LightPivot" type="Marker2D" parent="Ground/DeployLayer" index="8"]
[node name="LightPivot" type="Marker2D" parent="Ground/DeployLayer" index="7"]
position = Vector2(850, 95)
[node name="AmbushLabel1" parent="Ground/DeployLayer" index="9" instance=ExtResource("11_sul0a")]
[node name="AmbushLabel1" parent="Ground/DeployLayer" index="8" instance=ExtResource("11_sul0a")]
position = Vector2(707, 29)
[node name="太瘦弱" type="RichTextLabel" parent="Ground/DeployLayer/AmbushLabel1"]
offset_right = 308.0
offset_bottom = 21.0
custom_minimum_size = Vector2(500, 0)
offset_left = -250.0
offset_top = -114.0
offset_right = 250.0
offset_bottom = -73.0
theme_override_colors/default_color = Color(1, 0, 0, 1)
theme_override_fonts/normal_font = ExtResource("11_mr0pm")
theme_override_font_sizes/normal_font_size = 20
theme_override_font_sizes/normal_font_size = 40
bbcode_enabled = true
text = "[wave]太瘦弱[/wave]"
text = "[wave]太瘦弱了...[/wave]"
fit_content = true
horizontal_alignment = 1
[node name="AmbushLabel2" parent="Ground/DeployLayer" index="10" instance=ExtResource("11_sul0a")]
position = Vector2(2524, 4)
[node name="AmbushLabel2" parent="Ground/DeployLayer" index="9" instance=ExtResource("11_sul0a")]
position = Vector2(1182, 60)
[node name="保平安" type="RichTextLabel" parent="Ground/DeployLayer/AmbushLabel2"]
[node name="回不了头" type="RichTextLabel" parent="Ground/DeployLayer/AmbushLabel2"]
custom_minimum_size = Vector2(500, 0)
offset_left = -192.0
offset_top = -147.0
offset_right = 308.0
offset_bottom = 21.0
offset_bottom = -106.0
theme_override_colors/default_color = Color(1, 0, 0, 1)
theme_override_fonts/normal_font = ExtResource("11_mr0pm")
theme_override_font_sizes/normal_font_size = 20
theme_override_font_sizes/normal_font_size = 40
bbcode_enabled = true
text = "[wave]保平安[/wave]"
text = "[wave]已经...回不了头了。[/wave]"
fit_content = true
horizontal_alignment = 1
[node name="AmbushLabel3" parent="Ground/DeployLayer" index="10" instance=ExtResource("11_sul0a")]
position = Vector2(2504, 48)
[node name="血" type="RichTextLabel" parent="Ground/DeployLayer/AmbushLabel3"]
custom_minimum_size = Vector2(500, 0)
offset_left = -192.0
offset_top = -147.0
offset_right = 308.0
offset_bottom = -106.0
theme_override_colors/default_color = Color(1, 0, 0, 1)
theme_override_fonts/normal_font = ExtResource("11_mr0pm")
theme_override_font_sizes/normal_font_size = 40
bbcode_enabled = true
text = "[wave]浇洒髫年血,将她交给我,方能保你平安[/wave]"
fit_content = true
horizontal_alignment = 1
[node name="都一样吧" type="RichTextLabel" parent="Ground/DeployLayer" index="11"]
custom_minimum_size = Vector2(500, 0)
offset_left = 2805.0
offset_top = -61.0
offset_right = 3305.0
offset_bottom = -20.0
theme_override_colors/default_color = Color(1, 0, 0, 1)
theme_override_fonts/normal_font = ExtResource("11_mr0pm")
theme_override_font_sizes/normal_font_size = 40
bbcode_enabled = true
text = "[wave]反正...都一样吧[/wave]"
fit_content = true
horizontal_alignment = 1
[node name="MainPlayer" parent="Ground" index="5"]
position = Vector2(69, 103)
@ -252,7 +339,7 @@ limit_right = 1200
offset = Vector2(0, 50)
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
points = PackedVector2Array(30, 150, 3647, 151)
points = PackedVector2Array(30, 150, 4000, 151)
[node name="DirectionalLight2D" parent="Ground" index="8"]
energy = 0.6
@ -269,16 +356,34 @@ motion_scale = Vector2(0.3, 1)
motion_mirroring = Vector2(1200, 0)
[node name="Sprite2D" type="Sprite2D" parent="Ground/ParallaxBackground/底图"]
light_mask = 1025
texture = ExtResource("9_mr0pm")
[node name="PointLight2D底" type="PointLight2D" parent="Ground/ParallaxBackground/底图"]
position = Vector2(282, -53)
energy = 0.5
range_layer_min = -5
range_item_cull_mask = 1024
texture = ExtResource("13_vyyx8")
texture_scale = 1.1
[node name="后山" type="ParallaxLayer" parent="Ground/ParallaxBackground"]
z_index = -10
motion_scale = Vector2(0.5, 1)
motion_mirroring = Vector2(1134, 0)
[node name="Sprite2D" type="Sprite2D" parent="Ground/ParallaxBackground/后山"]
light_mask = 2049
texture = ExtResource("10_47wdn")
[node name="PointLight2D底_后" type="PointLight2D" parent="Ground/ParallaxBackground/后山"]
position = Vector2(205, -87)
energy = 0.3
range_layer_min = -5
range_item_cull_mask = 3072
texture = ExtResource("13_vyyx8")
texture_scale = 0.8
[node name="前山" type="ParallaxLayer" parent="Ground/ParallaxBackground"]
z_index = -10
position = Vector2(0, 16)
@ -286,15 +391,23 @@ motion_scale = Vector2(0.8, 1)
motion_mirroring = Vector2(1200, 0)
[node name="Sprite2D" type="Sprite2D" parent="Ground/ParallaxBackground/前山"]
light_mask = 4097
texture = ExtResource("11_vyyx8")
[node name="PointLight2D底_后_前" type="PointLight2D" parent="Ground/ParallaxBackground/前山"]
position = Vector2(307, -141)
energy = 0.3
range_layer_min = -5
range_item_cull_mask = 7168
texture = ExtResource("13_vyyx8")
[node name="ParallaxBackground2" type="ParallaxBackground" parent="Ground"]
layer = -1
[node name="山前地后" type="ParallaxLayer" parent="Ground/ParallaxBackground2"]
[node name="小孩山塌了" type="AnimatedSprite2D" parent="Ground/ParallaxBackground2/山前地后"]
position = Vector2(3000, -56)
position = Vector2(3000, -73)
sprite_frames = ExtResource("10_7x1vi")
animation = &"小孩山塌了"
script = ExtResource("9_vyyx8")
@ -333,4 +446,36 @@ texture = ExtResource("14_vyyx8")
position = Vector2(724, -47)
texture = ExtResource("15_7x1vi")
[node name="CanvasLayer" type="CanvasLayer" parent="Ground"]
[node name="最终吃肉" type="RichTextLabel" parent="Ground/CanvasLayer"]
light_mask = 3
custom_minimum_size = Vector2(500, 0)
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -250.0
offset_top = -37.5
offset_right = 250.0
offset_bottom = 3.5
grow_horizontal = 2
grow_vertical = 2
theme_override_colors/default_color = Color(1, 0, 0, 1)
theme_override_fonts/normal_font = ExtResource("11_mr0pm")
theme_override_font_sizes/normal_font_size = 40
bbcode_enabled = true
text = "[wave]又嫩又甜[/wave]"
fit_content = true
horizontal_alignment = 1
[node name="PointLight2D" type="PointLight2D" parent="Ground/CanvasLayer/最终吃肉"]
visible = false
position = Vector2(250, 11)
energy = 0.4
range_layer_max = 10
range_item_cull_mask = 2
texture = ExtResource("13_vyyx8")
[editable path="Ground"]

View File

@ -10,7 +10,7 @@ signal exit(arg)
@onready var hand_sprite = $"" as Node2D
@onready var animation_player = $AnimationPlayer as AnimationPlayer
# c03_meat_grinder: 0:初始化 1:已装转盘 2:绞肉机演出 3:演出结束
# c03_meat_grinder: 0:初始化 1:已装转盘 2:胖子游戏结束 3:绞肉机演出 4:演出结束
var stage := 0
@ -26,14 +26,14 @@ func _ready() -> void:
SceneManager.toggle_hud_display(false)
# 演出并传送到胖子游戏
_wheel_placed_and_show()
elif stage == 2:
elif stage == 3:
_hold_parent_cancel()
SceneManager.toggle_hud_display(false)
SceneManager.pop_center_notification("ui_center_notify_drag_to_rotate")
wheel_sprite.show()
# 需连接转动信号
wheel.rotated.connect(_on_wheel_rotated)
elif stage == 3:
elif stage == 4:
# 无需转动
wheel_sprite.show()

View File

@ -4,6 +4,7 @@ extends Event2D
# var prev_stage := 0
# var stage := 0
@onready var light = $"PointLight2D" as PointLight2D
func _ready() -> void:
super._ready()
@ -26,35 +27,44 @@ func _on_ground_ready(_ground: Ground2D) -> void:
func _fatty_game_finished_show() -> void:
var player = SceneManager.get_player()
var camera = SceneManager.get_camera_marker()
SceneManager.lock_player()
SceneManager.lock_player(0, 20)
player.set_facing_direction(Vector2.LEFT)
var monster = $"../棺材怪切肉" as AnimatedSprite2D
monster.show()
monster.play("砍桌子")
var sfx_monster = $"../棺材怪切肉/Sfx棺材怪切肉" as Sfx2D
#玩家在屠宰间右侧醒来,靠在墙上抬头看左侧不站起,镜头向左移动至长桌,棺材怪正在切桌上的肉块
# 等待3s左侧传来小蝉小女孩的笑声
# 棺材怪被吸引,走向左侧缓慢离开
#(棺材怪开始移动的同时镜头缓缓向右移动至玩家,无需播放玩家起身动作,镜头移回时直接为站立呼吸即可,玩家可以操作)
# 往左走看到小蝉站在绞肉机前,玩家走近后小蝉消失。
# fatty_sprite.play("掉下来")
# await fatty_sprite.animation_finished
var tween = create_tween()
tween.tween_property(camera, "force_offset:x", 200.0, 3.0)
tween.tween_interval(3.0)
await tween.finished
# 小孩笑声
$"Sfx2D小蝉笑声".play()
await Util.wait(0.5)
var sfx_laugh = $"Sfx2D小蝉笑声"
var tween = create_tween()
tween.tween_interval(3.0)
tween.tween_callback(sfx_laugh.play)
tween.tween_interval(0.5)
await tween.finished
create_tween().tween_property(camera, "force_offset:x", -300.0, 4.0).as_relative()
await Util.wait(1.5)
camera.tween_zoom(1.2, 3.0)
await Util.wait(2.0)
monster.play("地下呼吸帧_准备走路")
sfx_monster.volume_db = -100.0
await Util.wait(6.0)
SceneManager.black_transition()
await Util.wait(1.0)
# 进入特写演出
$"../Closeup绞肉机".display()
# 切肉声消失
create_tween().tween_property(sfx_monster, "volume_db", -100.0, 1.0)
create_tween().tween_property(sfx_laugh, "position:x", -500.0, 3.0).as_relative()
await Util.wait(3.0)
# 镜头恢复前,显示小蝉 & 玩家起身
SceneManager.get_player()._play_animation()
var ambush_xchan = $"../Ambush小蝉消失" as Ambush2D
ambush_xchan.visible = true
ambush_xchan.modulate.a = 0.0
ambush_xchan.triggered.connect(
func(): create_tween().tween_property(ambush_xchan, "modulate:a", 0.0, 1.0)
)
create_tween().tween_property(ambush_xchan, "modulate:a", 1.0, 1.0)
camera.tween_zoom(1.0, 3.0)
create_tween().tween_property(camera, "force_offset:x", 0.0, 3.0)
create_tween().tween_property(light, "energy", 0.0, 2.0)
await Util.wait(3.0)
SceneManager.pop_os_with_str("c03_s07_胖子游戏结束")
SceneManager.unlock_player()
camera.force_offset = Vector2.ZERO
EventManager.set_stage_if_greater("c03_meat_grinder", 3)
func _on_pre_stage_updated() -> void:

View File

@ -69,8 +69,8 @@ func start_show() -> void:
DialogueManager.show_dialogue_balloon(GlobalConfig.DIALOG_C03, "c03_绞肉机回忆小蝶和小婵7")
await DialogueManager.dialogue_ended
await Util.wait(1.5)
# c03_meat_grinder: 0:初始化 1:已装转盘 2:绞肉机演出 3:演出结束
EventManager.set_stage("c03_meat_grinder", 3)
# c03_meat_grinder: 0:初始化 1:已装转盘 2:胖子游戏结束 3:绞肉机演出 4:演出结束
EventManager.set_stage("c03_meat_grinder", 4)
EventManager.set_stage("c03_well_show", 1)
# 覆盖转场效果
SceneManager.white_transition(1.5, 2.0)

View File

@ -112,7 +112,7 @@ func chop_right(aiming_duration := AIMING_DURATION) -> void:
tween.tween_callback(shake)
tween.tween_callback(func(): aiming -= 1)
tween.tween_interval(0.1)
tween.tween_property(remote_right_shadow, "scale", Vector2(0.2, 0.2), 0.2)
tween.tween_property(remote_right_shadow, "scale", Vector2(0.2, 0.2), 0.5)
tween.parallel().tween_property(remote_right_side, "position:y", RESET_Y, 0.4)
tween.tween_callback(toggle_safe_period.bind(false))
@ -159,7 +159,7 @@ func _physics_process(delta: float) -> void:
var speed = MOVE_PLUS_SPEED
speed += abs(player.velocity.x)
if aiming:
speed *= 0.3
speed *= 0.6
global_position.x = move_toward(x, target_x, delta * speed)
# if Time.get_ticks_msec() % 100 == 0:
# prints(x, target_x)