Compare commits

...

2 Commits

Author SHA1 Message Date
03dd736f4f 胖子游戏完整优化 2025-08-07 18:28:19 +08:00
6a85f37e7b 完善胖子游戏3 2025-08-07 15:22:56 +08:00
17 changed files with 887 additions and 210 deletions

View File

@ -284,8 +284,17 @@ c03_抓药铜钱不足,钱还没准备够...牌子上讲需要三文,,,,,
c03_药方内容,生姜两片{br}竹叶十片去尖{br}经霜三年的甘蔗{br}蟋蟀一对 注:要原配,即本在一窠中者{br}金钱鼠尾辫一副 注:生剪 烧成灰兑水送服,,,,,
c03_s04_柜子照片,吾唯一至亲 李二弟,,,,,
c03_s06_没贴的寻人启事,没贴的寻人启事,,,,,
c03_s07_胖子游戏结束,张文开...文开...{br}方...小蝉...{br}绞肉机...,,,,,
c03_s08_囚室绳子,绑得很死,直接解不开绳子。,,,,,
c03_s08_囚室醒过来,?这里是,,,,,
c03_s08_囚室看到脚印,?又是脚印,,,,,
c03_s08_囚室符纸,妖物者,本自造化而生,具灵识,知求生,与万类本无别。人言有异,是以别之。,,,,,
c03_s09_胖子干尸,?胖子干尸,,,,,
c03_s12_label1,[wave]太瘦弱会被吃掉的![/wave],,,,,
c03_s12_label2,[wave]不够...还不够...[/wave],,,,,
c03_s12_label3,[wave]活着[/wave],,,,,
c03_s12_label4,[wave]太瘦弱了...[/wave],,,,,
c03_s12_label5,[wave]已经...回不了头了。[/wave],,,,,
c03_s12_label6,[wave]将她交给我,方能保你平安[/wave],,,,,
c03_s12_label7,[wave]反正...都一样吧[/wave],,,,,
c03_s12_label8,[wave]又嫩又甜[/wave],,,,,

1 keys zh_CN _character _notes _tags zh_SH en
284 c03_药方内容 生姜两片{br}竹叶十片去尖{br}经霜三年的甘蔗{br}蟋蟀一对 注:要原配,即本在一窠中者{br}金钱鼠尾辫一副 注:生剪 烧成灰兑水送服
285 c03_s04_柜子照片 吾唯一至亲 李二弟
286 c03_s06_没贴的寻人启事 没贴的寻人启事
287 c03_s07_胖子游戏结束 张文开...文开...{br}方...小蝉...{br}绞肉机...
288 c03_s08_囚室绳子 绑得很死,直接解不开绳子。
289 c03_s08_囚室醒过来 ?这里是
290 c03_s08_囚室看到脚印 ?又是脚印
291 c03_s08_囚室符纸 妖物者,本自造化而生,具灵识,知求生,与万类本无别。人言有异,是以别之。
292 c03_s09_胖子干尸 ?胖子干尸
293 c03_s12_label1 [wave]太瘦弱会被吃掉的![/wave]
294 c03_s12_label2 [wave]不够...还不够...[/wave]
295 c03_s12_label3 [wave]活着[/wave]
296 c03_s12_label4 [wave]太瘦弱了...[/wave]
297 c03_s12_label5 [wave]已经...回不了头了。[/wave]
298 c03_s12_label6 [wave]将她交给我,方能保你平安[/wave]
299 c03_s12_label7 [wave]反正...都一样吧[/wave]
300 c03_s12_label8 [wave]又嫩又甜[/wave]

View File

@ -377,6 +377,15 @@
妖物者,本自造化而生,具灵识,知求生,与万类本无别。人言有异,是以别之。 [ID:c03_s08_囚室符纸]
# s09 棺材房
?胖子干尸 [ID:c03_s09_胖子干尸]
# s10-12 胖子游戏1-3
[wave]太瘦弱会被吃掉的![/wave] [ID:c03_s12_label1]
[wave]不够...还不够...[/wave] [ID:c03_s12_label2]
[wave]活着[/wave] [ID:c03_s12_label3]
[wave]太瘦弱了...[/wave] [ID:c03_s12_label4]
[wave]已经...回不了头了。[/wave] [ID:c03_s12_label5]
[wave]将她交给我,方能保你平安[/wave] [ID:c03_s12_label6]
[wave]反正...都一样吧[/wave] [ID:c03_s12_label7]
[wave]又嫩又甜[/wave] [ID:c03_s12_label8]
=> END

View File

@ -3346,6 +3346,65 @@ animations = [{
"speed": 5.0
}, {
"frames": [{
"duration": 3.0,
"texture": ExtResource("561_absvs")
}, {
"duration": 3.0,
"texture": ExtResource("562_d128g")
}, {
"duration": 3.0,
"texture": ExtResource("561_absvs")
}, {
"duration": 3.0,
"texture": ExtResource("563_3fx5s")
}, {
"duration": 3.0,
"texture": ExtResource("564_l13jo")
}, {
"duration": 1.0,
"texture": ExtResource("565_5fahj")
}, {
"duration": 1.0,
"texture": ExtResource("566_y2gjg")
}, {
"duration": 1.0,
"texture": ExtResource("567_ikcep")
}, {
"duration": 1.0,
"texture": ExtResource("568_8vhco")
}, {
"duration": 3.0,
"texture": ExtResource("569_2qsjy")
}, {
"duration": 3.0,
"texture": ExtResource("570_wpe64")
}, {
"duration": 3.0,
"texture": ExtResource("571_88ymt")
}, {
"duration": 1.0,
"texture": ExtResource("572_tnlrb")
}, {
"duration": 1.0,
"texture": ExtResource("573_f02eb")
}, {
"duration": 1.0,
"texture": ExtResource("574_fhnjb")
}, {
"duration": 1.0,
"texture": ExtResource("575_2byqq")
}, {
"duration": 1.0,
"texture": ExtResource("576_5rkx7")
}, {
"duration": 1.0,
"texture": ExtResource("577_y1k3y")
}],
"loop": false,
"name": &"c02_吕萍_背靠起身_屠宰间",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": ExtResource("578_l4y1k")
}, {
@ -4773,6 +4832,23 @@ animations = [{
"speed": 5.0
}, {
"frames": [{
"duration": 8.0,
"texture": ExtResource("1009_3fbfp")
}, {
"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_胖子游戏_爬起来",
"speed": 6.0
}, {
"frames": [{
"duration": 1.0,
"texture": ExtResource("1011_mi2dh")
}, {

View File

@ -47,6 +47,7 @@ metadata/_edit_vertical_guides_ = [-15.0, -3.0]
position = Vector2(0, -60)
energy = 1.2
range_layer_min = -10
range_layer_max = 2
range_item_cull_mask = 15
shadow_enabled = true
texture = SubResource("GradientTexture2D_gk3xo")
@ -57,6 +58,7 @@ height = 10.0
position = Vector2(0, -60)
energy = 0.0
range_layer_min = -10
range_layer_max = 2
range_item_cull_mask = 15
shadow_enabled = true
texture = SubResource("GradientTexture2D_e2i85")

View File

@ -54,6 +54,7 @@ var ANIMATION_CONFIG = {
# 第二章井边站起来
19: [&"", Vector2.ONE, Vector2(2.5, -48.0), &"c02_吕萍_背靠起身", &""],
20: [&"", Vector2.ONE, Vector2(2.5, -48.0), &"c02_吕萍_背靠呼吸", &""],
21: [&"", Vector2.ONE, Vector2(2.5, -48.0), &"c02_吕萍_背靠起身_屠宰间", &""],
},
"吕萍爬行":
{
@ -195,8 +196,8 @@ var ANIMATION_CONFIG = {
"speed_runnig": 150.0,
"walk_footstep": 0.5,
"run_footstep": 0.5,
"os_height": 70.0,
"light_height": 20.0,
"os_height": 130.0,
"light_height": 50.0,
# 如果使用 auto就会自动以最低点为基准
# "auto_foot_offset": true,
"foot_offset": Vector2(0, -51.0),
@ -208,6 +209,7 @@ var ANIMATION_CONFIG = {
6: [&"c03_胖子游戏_洞里爬出来", Vector2.ONE, Vector2(-70, -44.5)],
7: [&"", Vector2.ONE, Vector2(0, -51.0), &"", &"c03_胖子游戏_胖子对半砍"],
8: [&"", Vector2.ONE, Vector2(0, -51.0), &"", &"c03_胖子游戏_吃东西"],
9: [&"", Vector2.ONE, Vector2(0, -108.0), &"", &"c03_胖子游戏_爬起来"],
},
"小小小蝶":
{
@ -217,8 +219,8 @@ var ANIMATION_CONFIG = {
"speed_runnig": 100.0,
"walk_footstep": 0.5,
"run_footstep": 7.0 / 9.0 / 2.0,
"os_height": 70.0,
"light_height": 20.0,
"os_height": 80.0,
"light_height": 40.0,
# 如果使用 auto就会自动以最低点为基准
# "auto_foot_offset": true,
"foot_offset": Vector2(0, -68.0),

View File

@ -64,6 +64,14 @@ func reset_position_immediately():
print("CameraFocusMarker reset_position_immediately to:", global_position)
func set_force_offset_to_target() -> void:
var target_position = focusing_node.global_position + _tweeked_position
if focusing_node is MainPlayer:
# player 的焦点在脚底,所以需要偏移 player 的高度。注意 y 轴是向下的,所以是减去 player 的高度
target_position.y -= focusing_node.current_animation_config.os_height * 0.7
force_offset = global_position - target_position
func tweak_position(velocity, facing_direction):
var ideal_x = facing_direction.x * min(50.0, 0.5 * abs(velocity.x))
var current_x = _tweeked_position.x

View File

@ -40,15 +40,18 @@ func _on_grinder_exited(_arg) -> void:
func _transport_to_the_fatty_story() -> void:
_setup_monster_chopping()
SceneManager.get_camera_marker().shake_camera(3.0)
SceneManager.lock_player()
await Util.wait(1.0)
SceneManager.dizzy_effect(3.0)
SceneManager.player_action(17, true)
Util.timer(1.0, _setup_monster_chopping)
await SceneManager.get_player().animation_finished
await Util.wait(2.0)
SceneManager.dizzy_effect(3.5)
SceneManager.player_action(17, true)
play("fatty_flash")
SceneManager.pop_debug_dialog_info("音效", "胖子闪烁")
await Util.wait(3.0)
SceneManager.unlock_player()
SceneManager.black_transition(1.5, 3.0)
await Util.wait(3.0)
SceneManager.get_ground_loader().transition_to_scene("c03_s10", "left")

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=30 format=3 uid="uid://c67732f2we13j"]
[gd_scene load_steps=35 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"]
@ -28,8 +28,75 @@
[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"]
[ext_resource type="Script" uid="uid://cphfob11f7atx" path="res://addons/property-inspector/pro_animation_sprite2d/pro_animated_sprite.gd" id="23_u2kpr"]
[ext_resource type="SpriteFrames" uid="uid://b7fhheih1hbvf" path="res://config/animation/entity_sprite_frames.tres" id="28_2kdsp"]
[sub_resource type="Animation" id="Animation_2kdsp"]
resource_name = "fatty_flash"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("MainPlayer/Light胖子闪烁:color")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.2, 0.266667, 0.366667, 0.433333, 0.633333, 0.7, 0.766667, 0.833333, 0.9),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 0,
"values": [Color(0, 0, 0, 1), Color(0, 0, 0, 1), Color(0.935194, 0.935194, 0.935194, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("MainPlayer/胖子:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.2, 0.366667, 0.433333, 0.633333, 0.7, 0.966667),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0.494118), Color(1, 1, 1, 0.494118), Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 0.494118), Color(1, 1, 1, 0)]
}
[sub_resource type="Animation" id="Animation_akd3f"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("MainPlayer/Light胖子闪烁:color")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(0, 0, 0, 1)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("MainPlayer/胖子:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"]
_data = {
&"RESET": SubResource("Animation_akd3f"),
&"fatty_flash": SubResource("Animation_2kdsp")
}
[sub_resource type="Gradient" id="Gradient_2kdsp"]
offsets = PackedFloat32Array(1)
colors = PackedColorArray(1, 1, 1, 1)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_akd3f"]
gradient = SubResource("Gradient_2kdsp")
height = 128
[node name="S07" type="Node2D"]
metadata/_edit_horizontal_guides_ = [-627.0]
@ -220,6 +287,21 @@ catty_light_energy = 0.5
player_movement_rect = Rect2(18, -158, 714, 316)
facing_direction = Vector2(1, 0)
[node name="胖子" type="AnimatedSprite2D" parent="Ground/MainPlayer" index="6"]
modulate = Color(1, 1, 1, 0)
light_mask = 257
position = Vector2(-1, -56)
sprite_frames = ExtResource("28_2kdsp")
animation = &"c02_张胖子_idle"
autoplay = "c02_张胖子_idle"
[node name="Light胖子闪烁" type="PointLight2D" parent="Ground/MainPlayer" index="7"]
position = Vector2(-1, -48)
color = Color(0, 0, 0, 1)
blend_mode = 2
range_item_cull_mask = 256
texture = SubResource("GradientTexture2D_akd3f")
[node name="CameraFocusMarker" parent="Ground" index="6"]
limit_right = 750

View File

@ -4,7 +4,7 @@ extends AnimationRoot
# 覆盖该方法
func _default_data() -> Dictionary:
return {}
return {"has_entered": false}
func _ready() -> void:
@ -42,13 +42,23 @@ func _setup_node_reference() -> void:
func _on_ground_ready() -> void:
_enter_scene()
# 设置相机范围
var right_x = player.player_movement_rect.size.x
var rect := Rect2i(0, -158, int(right_x) + 200, 316)
SceneManager.get_camera_marker().apply_limits(rect)
monster.before_restart.connect(_on_monster_restart)
# 如果播放过,隐藏砍断文字 label
if $"../DeployLayer/AmbushLabel2".played:
$"../DeployLayer/砍断Pivot".hide()
var ambush3 = $"../DeployLayer/Ambush肉山3"
# 玩家最早从 ambush3 开始玩
player.global_position.x = min(player.global_position.x, ambush3.global_position.x)
if not data["has_entered"]:
_do_enter_scene()
#0: 初始化; 1-3 三关
@ -79,18 +89,49 @@ func _on_chop_timer_timeout() -> void:
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)
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)
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)
_update_target_position()
Util.timer(0.5, _update_target_position)
Util.timer(1.0, _update_target_position)
Util.timer(1.5, _update_target_position)
if GlobalConfig.DEBUG:
print("棺材怪 chop next_x=", monster_target.global_position.x, "s_range=", s_range)
func _update_target_position() -> void:
var player_pos = player.global_position
var next_x = player_pos.x + min(player.velocity.x * aiming_duration, 150.0) + randf_range(-20.0, 20.0)
var s_range = range_of_stages[current_stage - 1]
monster_target.global_position.x = clampf(next_x, s_range.x, s_range.y)
func _tween_display_label(node) -> void:
var label = node.get_node("Label")
label.modulate.a = 0.0
label.show()
var tween = create_tween()
tween.tween_property(label, "modulate:a", 1.0, 0.5)
tween.tween_interval(5.0)
tween.tween_property(label, "modulate:a", 0.0, 0.5)
func label_ambush1() -> void:
var ambush = $"../DeployLayer/AmbushLabel1"
_tween_display_label(ambush)
# 使用 AnimationPlayer 砍断文字
func label_ambush2() -> void:
SceneManager.lock_player()
play("chop_split_word")
await animation_finished
SceneManager.unlock_player()
func label_ambush3() -> void:
var ambush = $"../DeployLayer/AmbushLabel3"
_tween_display_label(ambush)
func drop_meat_hill_1() -> void:
monster.hand_mode = 0
var ambush = $"../DeployLayer/Ambush肉山1"
@ -146,6 +187,7 @@ func _on_monster_restart() -> void:
const MEAT_MIN_DISTANCE = 100.0
# 天上掉肉
func _drop_meat_hill() -> void:
var camera = SceneManager.get_camera_marker()
@ -170,16 +212,14 @@ func _drop(progress: float, start_y: float, target_y: float) -> void:
meat_hill.global_position.x = min(max_x, meat_hill.global_position.x)
func _enter_scene() -> void:
func _do_enter_scene() -> void:
var portal_x = $"../DeployLayer/portal_left".global_position.x
var player_x = player.global_position.x
if GlobalConfig.DEBUG and player_x > 100:
return
player.global_position.x = portal_x
SceneManager.lock_player(0, 5, true)
SceneManager.pause_and_hide_player_sprite(4.5)
await player.animation_finished
SceneManager.unlock_player()
set_data("has_entered", true)
func _run_game() -> void:
@ -191,3 +231,7 @@ func _run_game() -> void:
monster.chop_left(1.0)
await Util.wait(4.0)
monster.chop_right(1.0)
func chop_shake() -> void:
var camera = SceneManager.get_camera_marker()
camera.shake_camera(4.0)

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=38 format=3 uid="uid://clgwc3jcqarpe"]
[gd_scene load_steps=41 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"]
@ -32,8 +32,299 @@
[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"]
[ext_resource type="Texture2D" uid="uid://b7gyapghy3tsy" path="res://asset/art/neutral_point_light.png" id="22_v1flc"]
[sub_resource type="Animation" id="Animation_4bvrv"]
resource_name = "chop_split_word"
length = 4.0
capture_included = true
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("DeployLayer/砍断文字的手:animation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [&"左手砍"]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("DeployLayer/砍断文字的手:position")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 2.03333, 2.2, 2.3, 2.36667, 2.93333, 3, 4),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1),
"update": 0,
"values": [Vector2(1566, -284), Vector2(1566, -284), Vector2(1566, -100), Vector2(1566, -17), Vector2(1566, -17), Vector2(1566, -17), Vector2(1566, -17), Vector2(1566, -300)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("DeployLayer/砍断文字的手:frame")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 2.26667, 2.43333),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 2,
"values": [0, 0, 2]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("DeployLayer/砍断Pivot/被砍断的文字1:position")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0.0333333, 2.2, 2.23333, 2.46667, 2.6),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Vector2(-206, -18), Vector2(-206, -18), Vector2(-224, 12), Vector2(-233, 189), Vector2(-169, 338)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("DeployLayer/砍断Pivot/被砍断的文字1:rotation")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0.0333333, 2.2, 2.23333, 2.46667, 2.6),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [0.0, 0.0, -0.13036, -0.88622, -1.55322]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("DeployLayer/砍断Pivot/被砍断的文字2:rotation")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0.0333333, 2.2, 2.23333, 2.46667, 2.63333),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [0.0, 0.0, 0.139331, 1.32286, 1.9148]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("DeployLayer/砍断Pivot/被砍断的文字2:position")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0.0333333, 2.2, 2.23333, 2.46667, 2.63333),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Vector2(4, -17), Vector2(4, -17), Vector2(15, -14), Vector2(69, 35), Vector2(152, 146)]
}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("DeployLayer/砍断文字的落点:scale")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0, 1.73333, 2.5, 3.13333, 3.76667),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Vector2(1e-05, 1e-05), Vector2(0.8, 0.8), Vector2(1, 1), Vector2(1, 1), Vector2(0, 0)]
}
tracks/8/type = "value"
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/path = NodePath("CanvasLayer/胖子游戏棺材怪/Sfx2D棺材怪切刀:playing")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/keys = {
"times": PackedFloat32Array(2.36667),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/9/type = "value"
tracks/9/imported = false
tracks/9/enabled = true
tracks/9/path = NodePath("DeployLayer/砍断Pivot/被砍断的文字1:modulate")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/keys = {
"times": PackedFloat32Array(2.13654, 2.46667),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/10/type = "value"
tracks/10/imported = false
tracks/10/enabled = true
tracks/10/path = NodePath("DeployLayer/砍断Pivot/被砍断的文字2:modulate")
tracks/10/interp = 1
tracks/10/loop_wrap = true
tracks/10/keys = {
"times": PackedFloat32Array(2.13654, 2.46667),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/11/type = "method"
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/path = NodePath("AnimationPlayer")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/keys = {
"times": PackedFloat32Array(2.33333),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"chop_shake"
}]
}
[sub_resource type="Animation" id="Animation_v1flc"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("DeployLayer/砍断文字的手:animation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [&"左手砍"]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("DeployLayer/砍断文字的手:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(1566, -284)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("DeployLayer/砍断文字的手:frame")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("DeployLayer/砍断Pivot/被砍断的文字1:position")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(-206, -18)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("DeployLayer/砍断Pivot/被砍断的文字1:rotation")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("DeployLayer/砍断Pivot/被砍断的文字2:rotation")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("DeployLayer/砍断Pivot/被砍断的文字2:position")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(4, -17)]
}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("DeployLayer/砍断文字的落点:scale")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(1e-05, 1e-05)]
}
tracks/8/type = "value"
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/path = NodePath("CanvasLayer/胖子游戏棺材怪/Sfx2D棺材怪切刀: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/砍断Pivot/被砍断的文字1:modulate")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
tracks/10/type = "value"
tracks/10/imported = false
tracks/10/enabled = true
tracks/10/path = NodePath("DeployLayer/砍断Pivot/被砍断的文字2:modulate")
tracks/10/interp = 1
tracks/10/loop_wrap = true
tracks/10/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"]
_data = {
&"RESET": SubResource("Animation_v1flc"),
&"chop_split_word": SubResource("Animation_4bvrv")
}
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_2wy2j"]
radius = 20.0
@ -58,6 +349,7 @@ stream_3/stream = ExtResource("10_js8ld")
[node name="S10" type="Node2D"]
metadata/_edit_horizontal_guides_ = [98.0, 120.0, -120.0]
metadata/_edit_vertical_guides_ = [1564.0]
[node name="Ground" parent="." instance=ExtResource("1_0c2p2")]
scene_name = "c03_s10"
@ -106,7 +398,7 @@ texture = ExtResource("17_f57cq")
position = Vector2(202, 15)
[node name="portal_right" parent="Ground/DeployLayer" index="1"]
position = Vector2(8170, 31)
position = Vector2(8914, 30.5)
texture = ExtResource("8_o5hrx")
offset = Vector2(65, -59)
sign_mark_offset = Vector2(0, -28.54)
@ -125,12 +417,12 @@ animation = &"胖子的母亲"
autoplay = "胖子的母亲"
[node name="落点左" type="Sprite2D" parent="Ground/DeployLayer" index="3"]
position = Vector2(1582, 98)
position = Vector2(3126, 97.5)
scale = Vector2(1e-05, 1e-05)
texture = ExtResource("18_js8ld")
[node name="左侧手" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="4"]
position = Vector2(1582, -317)
position = Vector2(3126, -317.5)
sprite_frames = ExtResource("16_f57cq")
animation = &"左手砍"
offset = Vector2(-11, -13)
@ -155,12 +447,12 @@ shape = SubResource("CapsuleShape2D_whxhi")
disabled = true
[node name="落点右" type="Sprite2D" parent="Ground/DeployLayer" index="5"]
position = Vector2(2158, 98)
position = Vector2(3702, 97.5)
scale = Vector2(1e-05, 1e-05)
texture = ExtResource("20_whxhi")
[node name="右侧手" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="6"]
position = Vector2(2158, -317)
position = Vector2(3702, -317.5)
sprite_frames = ExtResource("16_f57cq")
animation = &"右手砍"
offset = Vector2(9, -12)
@ -185,10 +477,10 @@ shape = SubResource("CapsuleShape2D_whxhi")
disabled = true
[node name="MonsterMoveTarget" type="Marker2D" parent="Ground/DeployLayer" index="7"]
position = Vector2(1646, -1)
position = Vector2(2061, -1)
[node name="肉山" type="AnimatableBody2D" parent="Ground/DeployLayer" index="8"]
position = Vector2(162, -421)
position = Vector2(-308, -591)
collision_layer = 2
collision_mask = 0
@ -222,54 +514,61 @@ position = Vector2(-19, -38)
shape = SubResource("CircleShape2D_lljm3")
[node name="肉山Transform" type="RemoteTransform2D" parent="Ground/DeployLayer" index="9"]
position = Vector2(162, -421)
position = Vector2(-308, -591)
remote_path = NodePath("../肉山")
update_rotation = false
update_scale = false
[node name="Ambush肉山1" parent="Ground/DeployLayer" index="10" instance=ExtResource("11_lljm3")]
position = Vector2(1238, -3)
position = Vector2(1982, -3.5)
one_shot = false
hook_method = "drop_meat_hill_1"
[node name="Start1" type="Marker2D" parent="Ground/DeployLayer" index="11"]
position = Vector2(1261, -2)
position = Vector2(2005, -2.5)
[node name="End1" type="Marker2D" parent="Ground/DeployLayer" index="12"]
position = Vector2(1926, -3)
position = Vector2(2676, -2)
[node name="Ambush肉山2" parent="Ground/DeployLayer" index="13" instance=ExtResource("11_lljm3")]
position = Vector2(2078, -8)
position = Vector2(2828, -7)
one_shot = false
hook_method = "drop_meat_hill_2"
[node name="Start2" type="Marker2D" parent="Ground/DeployLayer" index="14"]
position = Vector2(2145, -11)
position = Vector2(2895, -10)
[node name="End2" type="Marker2D" parent="Ground/DeployLayer" index="15"]
position = Vector2(4128, -16)
position = Vector2(5259, -7)
[node name="Ambush肉山3" parent="Ground/DeployLayer" index="16" instance=ExtResource("11_lljm3")]
position = Vector2(4337, -13)
position = Vector2(5468, -4)
one_shot = false
hook_method = "drop_meat_hill_3"
[node name="Start3" type="Marker2D" parent="Ground/DeployLayer" index="17"]
position = Vector2(4562, -10)
position = Vector2(5693, -1)
[node name="End3" type="Marker2D" parent="Ground/DeployLayer" index="18"]
position = Vector2(7618, 9)
position = Vector2(7860, -1)
[node name="ChopTimer" type="Timer" parent="Ground/DeployLayer" index="19"]
wait_time = 2.5
autostart = true
[node name="老太太文字" type="RichTextLabel" parent="Ground/DeployLayer" index="20"]
[node name="AmbushLabel1" parent="Ground/DeployLayer" index="20" instance=ExtResource("11_lljm3")]
position = Vector2(591, 51)
hook_method = "label_ambush1"
[node name="Label" type="RichTextLabel" parent="Ground/DeployLayer/AmbushLabel1"]
visible = false
z_index = 6
custom_minimum_size = Vector2(1000, 0)
offset_left = 126.0
offset_top = -70.0
offset_right = 1126.0
offset_bottom = -29.0
offset_left = -263.0
offset_top = -53.0
offset_right = 737.0
offset_bottom = -12.0
mouse_filter = 2
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
@ -279,20 +578,43 @@ fit_content = true
scroll_active = false
horizontal_alignment = 1
[node name="Control" type="Control" parent="Ground/DeployLayer" index="21"]
[node name="AmbushLabel2" parent="Ground/DeployLayer" index="21" instance=ExtResource("11_lljm3")]
position = Vector2(1442, 42)
hook_method = "label_ambush2"
[node name="砍断文字的手" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="22"]
z_index = 6
position = Vector2(1566, -284)
sprite_frames = ExtResource("16_f57cq")
animation = &"左手砍"
offset = Vector2(-11, -13)
[node name="砍断文字的落点" type="Sprite2D" parent="Ground/DeployLayer" index="23"]
position = Vector2(1564, 98)
scale = Vector2(1e-05, 1e-05)
texture = ExtResource("18_js8ld")
[node name="砍断Pivot" type="Control" parent="Ground/DeployLayer" index="24"]
layout_mode = 3
anchors_preset = 0
offset_left = 1563.0
offset_top = -47.0
offset_right = 1603.0
offset_bottom = -7.0
offset_left = 1564.0
offset_right = 1604.0
offset_bottom = 40.0
mouse_filter = 2
[node name="被砍断的文字1" type="RichTextLabel" parent="Ground/DeployLayer/Control"]
[node name="被砍断的文字1" type="RichTextLabel" parent="Ground/DeployLayer/砍断Pivot"]
custom_minimum_size = Vector2(200, 0)
offset_left = -206.0
offset_top = -18.0
offset_right = -6.0
offset_bottom = 23.0
layout_mode = 1
anchors_preset = -1
anchor_left = 0.525
anchor_top = 9.475
anchor_right = 0.525
anchor_bottom = 9.475
offset_left = -249.587
offset_top = -276.792
offset_right = -49.5868
offset_bottom = -235.792
mouse_filter = 2
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
@ -301,14 +623,15 @@ 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"]
[node name="被砍断的文字2" type="RichTextLabel" parent="Ground/DeployLayer/砍断Pivot"]
custom_minimum_size = Vector2(200, 0)
offset_left = 4.0
offset_top = -17.0
offset_right = 204.0
offset_bottom = 24.0
layout_mode = 0
offset_left = 42.5211
offset_top = 10.9728
offset_right = 242.521
offset_bottom = 51.9728
mouse_filter = 2
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
@ -317,12 +640,19 @@ text = "[wave]着[/wave]"
fit_content = true
scroll_active = false
[node name="结尾文字" type="RichTextLabel" parent="Ground/DeployLayer" index="22"]
[node name="AmbushLabel3" parent="Ground/DeployLayer" index="25" instance=ExtResource("11_lljm3")]
position = Vector2(8448, 36)
hook_method = "label_ambush3"
[node name="Label" type="RichTextLabel" parent="Ground/DeployLayer/AmbushLabel3"]
visible = false
z_index = 6
custom_minimum_size = Vector2(1000, 0)
offset_left = 7302.0
offset_top = -71.0
offset_right = 8302.0
offset_bottom = -30.0
offset_left = -372.0
offset_top = -40.0
offset_right = 628.0
offset_bottom = 1.0
mouse_filter = 2
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
@ -332,23 +662,23 @@ fit_content = true
scroll_active = false
horizontal_alignment = 1
[node name="PointLight2D结尾文字" type="PointLight2D" parent="Ground/DeployLayer/结尾文字"]
[node name="PointLight2D结尾文字" type="PointLight2D" parent="Ground/DeployLayer/AmbushLabel3/Label"]
position = Vector2(835, 78)
range_layer_min = -5
texture = ExtResource("20_4gg56")
texture_scale = 1.1
[node name="洞口的手2" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="23"]
[node name="洞口的手2" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="26"]
z_index = -1
position = Vector2(8091, 31)
position = Vector2(8835, 30.5)
sprite_frames = ExtResource("21_4bvrv")
animation = &"小手"
autoplay = "小手"
speed_scale = 1.1
[node name="洞口的手" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="24"]
[node name="洞口的手" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="27"]
z_index = 9
position = Vector2(8155, 35)
position = Vector2(8899, 34.5)
sprite_frames = ExtResource("21_4bvrv")
animation = &"小手"
autoplay = "小手"
@ -380,6 +710,13 @@ character = "胖子游戏"
player_movement_rect = Rect2(30, -158, 8170, 316)
facing_direction = Vector2(1, 0)
[node name="PointLight2D2" type="PointLight2D" parent="Ground/MainPlayer" index="6"]
position = Vector2(-4, -40)
energy = 0.5
range_layer_min = -10
range_layer_max = 2
texture = ExtResource("22_v1flc")
[node name="BGParallaxLayer" parent="Ground/ParallaxForeground" index="0"]
motion_scale = Vector2(0.9, 1)
@ -393,7 +730,7 @@ texture = ExtResource("6_hno1l")
offset = Vector2(0, 50)
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
points = PackedVector2Array(30, 150, 8162, 151)
points = PackedVector2Array(30, 150, 8921, 151)
[node name="DirectionalLight2D" parent="Ground" index="8"]
energy = 0.4
@ -461,7 +798,7 @@ follow_viewport_enabled = true
[node name="胖子游戏棺材怪" type="AnimatedSprite2D" parent="Ground/CanvasLayer" node_paths=PackedStringArray("move_target", "left_side_sprite", "right_side_sprite", "left_area", "right_area", "left_static_collision", "right_static_collision")]
self_modulate = Color(1, 1, 1, 0)
z_index = -1
position = Vector2(1890, -17)
position = Vector2(3434, -17.5)
sprite_frames = ExtResource("16_f57cq")
animation = &"棺材怪右砍"
script = ExtResource("9_js8ld")
@ -483,12 +820,11 @@ loop = true
loop_round_time = 0.4
metadata/_custom_type_script = "uid://wapo47a1oddf"
[node name="Sfx2D棺材怪切刀" type="AudioStreamPlayer2D" parent="Ground/CanvasLayer/胖子游戏棺材怪"]
[node name="Sfx2D棺材怪切刀" type="AudioStreamPlayer" parent="Ground/CanvasLayer/胖子游戏棺材怪"]
stream = ExtResource("12_whxhi")
max_distance = 1000.0
bus = &"game_sfx"
script = ExtResource("10_f57cq")
metadata/_custom_type_script = "uid://wapo47a1oddf"
script = ExtResource("4_60xwi")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="左侧" type="RemoteTransform2D" parent="Ground/CanvasLayer/胖子游戏棺材怪"]
position = Vector2(-308, -300)

View File

@ -41,6 +41,7 @@ func _check_first_enter() -> void:
func talk_with_npc() -> void:
$"../DeployLayer/Ambush对话探子".enabled = false
SceneManager.lock_player()
$"../DeployLayer/Pro探子".flip_h = false
var camera = SceneManager.get_camera_marker()

View File

@ -95,6 +95,7 @@ metadata/_custom_type_script = "uid://cphfob11f7atx"
[node name="Ambush对话探子" parent="Ground/DeployLayer" index="4" instance=ExtResource("9_0w5fd")]
position = Vector2(995.5, 44.5)
one_shot = false
hook_method = "talk_with_npc"
[node name="文物" type="Sprite2D" parent="Ground/DeployLayer" index="5"]

View File

@ -4,7 +4,7 @@ extends AnimationRoot
# 覆盖该方法
func _default_data() -> Dictionary:
return {}
return {"has_entered": false}
func _ready() -> void:
@ -15,10 +15,10 @@ func _ready() -> void:
#region node_reference
var collapse_sprite: AnimatedSprite2D
var ambush_collapse: Ambush2D
var final_meat_ambush: Ambush2D
var final_meat_sprite: AnimatedSprite2D
var final_label
#endregion
@ -28,6 +28,8 @@ func _setup_node_reference() -> void:
final_meat_ambush = $"../DeployLayer/Ambush最终吃肉"
final_meat_sprite = $"../DeployLayer/Ambush最终吃肉/Pro吃肉"
final_label = $"../CanvasLayer/最终吃肉"
ambush_collapse = $"../DeployLayer/Ambush小孩山塌了"
func _on_ground_ready() -> void:
# 设置相机范围
@ -35,7 +37,8 @@ func _on_ground_ready() -> void:
var right_x = player.player_movement_rect.size.x
var rect := Rect2i(0, -158, int(right_x) + 320, 316)
SceneManager.get_camera_marker().apply_limits(rect)
# 玩家不能超过 ambush_collapse 位置
player.global_position.x = min(player.global_position.x, ambush_collapse.global_position.x)
# 处理 Ambush肉1 节点
for i in range(1, 4):
var node = get_node("../DeployLayer/Ambush肉" + str(i)) as Ambush2D
@ -44,6 +47,15 @@ func _on_ground_ready() -> void:
_disable_wall_on_meat(node)
else:
node.triggered.connect(_on_eat_meat_triggered.bind(node))
if not data["has_entered"]:
var x = $"../DeployLayer/portal_left".global_position.x
SceneManager.get_player().global_position.x = x
SceneManager.get_player().set_facing_direction(Vector2.RIGHT)
SceneManager.lock_player(0, 9, true)
set_data("has_entered", true)
await SceneManager.pause_and_hide_player_sprite(1.0)
await SceneManager.get_player().animation_finished
SceneManager.unlock_player()
func _disable_wall_on_meat(meat_node) -> void:
@ -52,21 +64,52 @@ func _disable_wall_on_meat(meat_node) -> void:
func _on_eat_meat_triggered(node) -> void:
_disable_wall_on_meat(node)
_tween_display_label(node)
var player = SceneManager.get_player()
SceneManager.lock_player(0, 8)
var tween = create_tween()
tween.tween_interval(0.9)
tween.tween_property(node, "modulate:a", 0.0, 1.0)
tween.tween_property(node, "self_modulate:a", 0.0, 1.0)
await player.animation_finished
SceneManager.unlock_player()
func _tween_display_label(node) -> void:
var label = node.get_node("Label")
label.modulate.a = 0.0
label.show()
var tween = create_tween()
tween.tween_property(label, "modulate:a", 1.0, 0.5)
tween.tween_interval(5.0)
tween.tween_property(label, "modulate:a", 0.0, 0.5)
func label_ambush1() -> void:
var ambush = $"../DeployLayer/AmbushLabel1"
_tween_display_label(ambush)
func label_ambush2() -> void:
var ambush = $"../DeployLayer/AmbushLabel2"
_tween_display_label(ambush)
func label_ambush3() -> void:
var ambush = $"../DeployLayer/AmbushLabel3"
_tween_display_label(ambush)
func eat_meat() -> void:
final_label.show()
final_label.modulate.a = 0.0
final_meat_ambush.enabled = false
var light_pivot = $"../DeployLayer/LightPivot"
var light_pivot = $"../DeployLayer/Ambush最终吃肉/LightPivot"
SceneManager.lock_player()
var x = final_meat_sprite.global_position.x
await SceneManager.get_player().walk_to_x(x).finished
var tween = create_tween()
tween.tween_interval(1.0)
tween.tween_property(final_label, "modulate:a", 1.0, 2.5)
# 第一帧没有瘦子,后面才有
var player = SceneManager.get_player() as MainPlayer
player.reparent_light(light_pivot)
@ -82,11 +125,45 @@ func eat_meat() -> void:
func collapse() -> void:
$"../DeployLayer/Ambush小孩山塌了".enabled = false
var player = SceneManager.get_player()
ambush_collapse.enabled = false
# 交互之后,启用 final_meat_ambush
final_meat_ambush.enabled = true
SceneManager.lock_player()
var label = $"../DeployLayer/都一样"
label.modulate.a = 0.0
label.show()
var camera := SceneManager.get_camera_marker() as CameraFocusMarker
var default_limit_rect := camera.default_camera_rect
var limit_rect := camera.default_camera_rect
limit_rect.position.y -= 100
limit_rect.size.y += 100
camera.apply_limits(limit_rect)
if GlobalConfig.DEBUG:
print("camera limit_rect:", limit_rect)
var tween
create_tween().tween_property(label, "modulate:a", 1.0, 2.0)
await Util.wait(1.0)
Util.timer(1.0, camera.tween_zoom.bind(1.05, 2.0))
camera.set_force_offset_to_target()
var target_offset = ambush_collapse.get_node("CameraPivot").global_position - player.global_position
tween = create_tween()
tween.tween_property(camera, "force_offset", target_offset, 3.0)
tween.tween_interval(1.0)
await tween.finished
collapse_sprite.play()
$"Sfx山塌了".play()
#TODO
SceneManager.pop_debug_dialog_info("音效", "山塌了")
# 交互之后,启用 final_meat_ambush
final_meat_ambush.enabled = true
await Util.wait(1.5)
camera.shake_camera()
tween = create_tween()
tween.tween_interval(3.0)
tween.tween_callback(camera.tween_zoom.bind(1.0, 1.5))
tween.tween_property(camera, "force_offset", Vector2.ZERO, 2.0)
await tween.finished
SceneManager.unlock_player()
camera.apply_limits(default_limit_rect)
create_tween().tween_property(label, "modulate:a", 0.0, 1.0)

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=24 format=3 uid="uid://cxabqg87g4vxc"]
[gd_scene load_steps=23 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"]
@ -9,7 +9,6 @@
[ext_resource type="Script" uid="uid://cphfob11f7atx" path="res://addons/property-inspector/pro_animation_sprite2d/pro_animated_sprite.gd" id="9_vyyx8"]
[ext_resource type="SpriteFrames" uid="uid://cb3b44a1jpybb" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第四段/c03_胖子游戏第四段_frames.tres" id="10_7x1vi"]
[ext_resource type="Texture2D" uid="uid://dd8vkws24b5vy" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/肉山后 可以和背景移动速度不一样 循环贴图.png" id="10_47wdn"]
[ext_resource type="Texture2D" uid="uid://q3n7lw1ngoqh" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/遮罩 循环贴图.png" id="10_bi3i1"]
[ext_resource type="FontFile" uid="uid://bnxdsxp7dst7f" path="res://asset/font/锐字太空混元像素简繁-闪 超黑_mianfeiziti.com.ttf" id="11_mr0pm"]
[ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="11_sul0a"]
[ext_resource type="Texture2D" uid="uid://dpt0s2ujvcjs5" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/肉山前 可以和背景移动速度不一样 循环贴图.png" id="11_vyyx8"]
@ -25,14 +24,14 @@ length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("DeployLayer/LightPivot:position")
tracks/0/path = NodePath("DeployLayer/Ambush最终吃肉/LightPivot:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(850, 95)]
"values": [Vector2(0, 95)]
}
tracks/1/type = "value"
tracks/1/imported = false
@ -66,14 +65,14 @@ capture_included = true
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("DeployLayer/LightPivot:position")
tracks/0/path = NodePath("DeployLayer/Ambush最终吃肉/LightPivot:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.42, 0.7, 3.31, 4.75, 5.79, 9.4, 9.68, 10),
"times": PackedFloat32Array(0, 0.433333, 0.7, 3.31, 4.75, 5.79, 9.4, 9.68, 10),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 0,
"values": [Vector2(850, 95), Vector2(875, 75), Vector2(892, 47), Vector2(940, 20), Vector2(944, 21), Vector2(959, 11), Vector2(977, -13), Vector2(977, 13), Vector2(968, 176)]
"values": [Vector2(0, 95), Vector2(25, 95), Vector2(42, 77), Vector2(90, 50), Vector2(105, 51), Vector2(109, 51), Vector2(127, 27), Vector2(127, 53), Vector2(118, 216)]
}
tracks/1/type = "value"
tracks/1/imported = false
@ -109,7 +108,7 @@ _data = {
[sub_resource type="RectangleShape2D" id="RectangleShape2D_y18rp"]
[node name="S12" type="Node2D"]
metadata/_edit_horizontal_guides_ = [-627.0, 103.0, 63.0]
metadata/_edit_horizontal_guides_ = [-627.0, 103.0, 63.0, -120.0, -158.0]
[node name="Ground" parent="." instance=ExtResource("1_ly8ge")]
scene_name = "c03_s12"
@ -145,15 +144,36 @@ position = Vector2(2797, 0)
offset = Vector2(0, -158)
[node name="portal_left" parent="Ground/DeployLayer" index="0"]
position = Vector2(69, 21)
position = Vector2(159, 29)
[node name="portal_right" parent="Ground/DeployLayer" index="1"]
position = Vector2(4346, 37)
position = Vector2(7496, 3)
[node name="Ambush肉1" parent="Ground/DeployLayer" index="2" instance=ExtResource("11_sul0a")]
position = Vector2(923, 85)
[node name="AmbushLabel1" parent="Ground/DeployLayer" index="2" instance=ExtResource("11_sul0a")]
position = Vector2(609, 26)
hook_method = "label_ambush1"
[node name="Label" type="RichTextLabel" parent="Ground/DeployLayer/AmbushLabel1"]
visible = false
z_index = 6
custom_minimum_size = Vector2(500, 0)
offset_left = -128.0
offset_top = -30.0
offset_right = 372.0
offset_bottom = 11.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 = "c03_s12_label4"
fit_content = true
horizontal_alignment = 1
[node name="Ambush肉1" parent="Ground/DeployLayer" index="3" instance=ExtResource("11_sul0a")]
z_index = 6
position = Vector2(1295, 89)
texture = ExtResource("14_vyyx8")
offset = Vector2(13, 0)
offset = Vector2(20, 0)
trigger_mode = "interact"
[node name="StaticBody2D" type="StaticBody2D" parent="Ground/DeployLayer/Ambush肉1"]
@ -165,23 +185,46 @@ collision_mask = 0
shape = SubResource("RectangleShape2D_y18rp")
[node name="Label" type="RichTextLabel" parent="Ground/DeployLayer/Ambush肉1"]
visible = false
custom_minimum_size = Vector2(1000, 0)
offset_left = -474.0
offset_top = -169.0
offset_right = 526.0
offset_bottom = -128.0
mouse_filter = 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]"
text = "c03_s12_label1"
fit_content = true
horizontal_alignment = 1
[node name="Ambush肉2" parent="Ground/DeployLayer" index="3" instance=ExtResource("11_sul0a")]
position = Vector2(1443, 84)
[node name="AmbushLabel2" parent="Ground/DeployLayer" index="4" instance=ExtResource("11_sul0a")]
position = Vector2(1896, 37)
hook_method = "label_ambush2"
[node name="Label" type="RichTextLabel" parent="Ground/DeployLayer/AmbushLabel2"]
visible = false
z_index = 6
custom_minimum_size = Vector2(500, 0)
offset_left = -145.0
offset_top = -39.0
offset_right = 355.0
offset_bottom = 2.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 = "c03_s12_label5"
fit_content = true
horizontal_alignment = 1
[node name="Ambush肉2" parent="Ground/DeployLayer" index="5" instance=ExtResource("11_sul0a")]
z_index = 6
position = Vector2(2700, 88)
texture = ExtResource("12_mr0pm")
offset = Vector2(20, 0)
offset = Vector2(27, 0)
trigger_mode = "interact"
[node name="StaticBody2D" type="StaticBody2D" parent="Ground/DeployLayer/Ambush肉2"]
@ -193,23 +236,26 @@ collision_mask = 0
shape = SubResource("RectangleShape2D_y18rp")
[node name="Label" type="RichTextLabel" parent="Ground/DeployLayer/Ambush肉2"]
visible = false
custom_minimum_size = Vector2(500, 0)
offset_left = -204.0
offset_top = -166.0
offset_right = 296.0
offset_bottom = -125.0
mouse_filter = 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]"
text = "c03_s12_label2"
fit_content = true
horizontal_alignment = 1
[node name="Ambush肉3" parent="Ground/DeployLayer" index="4" instance=ExtResource("11_sul0a")]
position = Vector2(2016, 85)
[node name="Ambush肉3" parent="Ground/DeployLayer" index="6" instance=ExtResource("11_sul0a")]
z_index = 6
position = Vector2(3736, 89)
texture = ExtResource("15_7x1vi")
offset = Vector2(37, 0)
offset = Vector2(43, 0)
trigger_mode = "interact"
collision_width_and_x = Vector2(44.19, 0)
@ -221,30 +267,77 @@ collision_mask = 0
[node name="CollisionShape2D" type="CollisionShape2D" parent="Ground/DeployLayer/Ambush肉3/StaticBody2D"]
shape = SubResource("RectangleShape2D_y18rp")
[node name="回不了头" type="RichTextLabel" parent="Ground/DeployLayer/Ambush肉3"]
[node name="Label" type="RichTextLabel" parent="Ground/DeployLayer/Ambush肉3"]
visible = false
custom_minimum_size = Vector2(500, 0)
offset_left = -232.0
offset_top = -165.0
offset_right = 268.0
offset_bottom = -124.0
mouse_filter = 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]"
text = "c03_s12_label3"
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)
[node name="AmbushLabel3" parent="Ground/DeployLayer" index="7" instance=ExtResource("11_sul0a")]
position = Vector2(4566, 54)
hook_method = "label_ambush3"
[node name="Label" type="RichTextLabel" parent="Ground/DeployLayer/AmbushLabel3"]
visible = false
z_index = 6
custom_minimum_size = Vector2(500, 0)
offset_left = -79.0
offset_top = -58.0
offset_right = 421.0
offset_bottom = -17.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 = "c03_s12_label6"
fit_content = true
horizontal_alignment = 1
[node name="Ambush小孩山塌了" parent="Ground/DeployLayer" index="8" instance=ExtResource("11_sul0a")]
position = Vector2(5609.84, 32.01)
trigger_mode = "interact"
one_shot = false
hook_method = "collapse"
[node name="CameraPivot" type="Marker2D" parent="Ground/DeployLayer/Ambush小孩山塌了"]
position = Vector2(66.1602, 3.99001)
[node name="都一样" type="RichTextLabel" parent="Ground/DeployLayer" index="9"]
visible = false
z_index = 6
custom_minimum_size = Vector2(500, 0)
offset_left = 5438.0
offset_top = 17.0
offset_right = 5938.0
offset_bottom = 58.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 = "c03_s12_label7"
fit_content = true
horizontal_alignment = 1
[node name="Ambush最终吃肉" parent="Ground/DeployLayer" index="10" instance=ExtResource("11_sul0a")]
position = Vector2(7001, 0)
sign_mark_offset = Vector2(36.02, 34.08)
enabled = false
trigger_mode = "interact"
one_shot = false
hook_method = "eat_meat"
[node name="Pro吃肉" type="AnimatedSprite2D" parent="Ground/DeployLayer/Ambush最终吃肉"]
position = Vector2(8, 41)
position = Vector2(8, 95)
sprite_frames = ExtResource("10_7x1vi")
animation = &"爬绞肉机最终的"
offset = Vector2(88, -105)
@ -252,79 +345,8 @@ 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="7"]
position = Vector2(850, 95)
[node name="AmbushLabel1" parent="Ground/DeployLayer" index="8" instance=ExtResource("11_sul0a")]
position = Vector2(707, 29)
[node name="太瘦弱" type="RichTextLabel" parent="Ground/DeployLayer/AmbushLabel1"]
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 = 40
bbcode_enabled = true
text = "[wave]太瘦弱了...[/wave]"
fit_content = true
horizontal_alignment = 1
[node name="AmbushLabel2" parent="Ground/DeployLayer" index="9" instance=ExtResource("11_sul0a")]
position = Vector2(1182, 60)
[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 = -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="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="LightPivot" type="Marker2D" parent="Ground/DeployLayer/Ambush最终吃肉"]
position = Vector2(0, 95)
[node name="MainPlayer" parent="Ground" index="5"]
position = Vector2(69, 103)
@ -339,7 +361,7 @@ limit_right = 1200
offset = Vector2(0, 50)
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
points = PackedVector2Array(30, 150, 4000, 151)
points = PackedVector2Array(30, 150, 7000, 151)
[node name="DirectionalLight2D" parent="Ground" index="8"]
energy = 0.6
@ -349,18 +371,19 @@ range_layer_max = 10
[node name="ParallaxBackground" type="ParallaxBackground" parent="Ground"]
layer = -3
scroll_ignore_camera_zoom = true
[node name="底图" type="ParallaxLayer" parent="Ground/ParallaxBackground"]
z_index = -10
motion_scale = Vector2(0.3, 1)
motion_mirroring = Vector2(1200, 0)
motion_scale = Vector2(0.3, 0.5)
motion_mirroring = Vector2(1200, 316)
[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)
position = Vector2(282, -39)
energy = 0.5
range_layer_min = -5
range_item_cull_mask = 1024
@ -369,7 +392,8 @@ texture_scale = 1.1
[node name="后山" type="ParallaxLayer" parent="Ground/ParallaxBackground"]
z_index = -10
motion_scale = Vector2(0.5, 1)
position = Vector2(0, 40)
motion_scale = Vector2(0.5, 0.8)
motion_mirroring = Vector2(1134, 0)
[node name="Sprite2D" type="Sprite2D" parent="Ground/ParallaxBackground/后山"]
@ -377,7 +401,7 @@ light_mask = 2049
texture = ExtResource("10_47wdn")
[node name="PointLight2D底_后" type="PointLight2D" parent="Ground/ParallaxBackground/后山"]
position = Vector2(205, -87)
position = Vector2(205, -56)
energy = 0.3
range_layer_min = -5
range_item_cull_mask = 3072
@ -386,8 +410,8 @@ texture_scale = 0.8
[node name="前山" type="ParallaxLayer" parent="Ground/ParallaxBackground"]
z_index = -10
position = Vector2(0, 16)
motion_scale = Vector2(0.8, 1)
position = Vector2(0, 20)
motion_scale = Vector2(0.8, 0.9)
motion_mirroring = Vector2(1200, 0)
[node name="Sprite2D" type="Sprite2D" parent="Ground/ParallaxBackground/前山"]
@ -395,7 +419,7 @@ light_mask = 4097
texture = ExtResource("11_vyyx8")
[node name="PointLight2D底_后_前" type="PointLight2D" parent="Ground/ParallaxBackground/前山"]
position = Vector2(307, -141)
position = Vector2(259, -77)
energy = 0.3
range_layer_min = -5
range_item_cull_mask = 7168
@ -407,13 +431,22 @@ layer = -1
[node name="山前地后" type="ParallaxLayer" parent="Ground/ParallaxBackground2"]
[node name="小孩山塌了" type="AnimatedSprite2D" parent="Ground/ParallaxBackground2/山前地后"]
position = Vector2(3000, -73)
light_mask = 1025
position = Vector2(5672.84, -25.99)
sprite_frames = ExtResource("10_7x1vi")
animation = &"小孩山塌了"
offset = Vector2(-47.84, -0.01)
script = ExtResource("9_vyyx8")
autostart = false
metadata/_custom_type_script = "uid://cphfob11f7atx"
[node name="PointLight2D底_后_前" type="PointLight2D" parent="Ground/ParallaxBackground2/山前地后/小孩山塌了"]
position = Vector2(51, 134)
range_layer_min = -5
range_item_cull_mask = 7168
texture = ExtResource("13_vyyx8")
texture_scale = 1.5
[node name="地面" type="ParallaxLayer" parent="Ground/ParallaxBackground2"]
position = Vector2(0, 101)
motion_mirroring = Vector2(1200, 0)
@ -421,11 +454,6 @@ motion_mirroring = Vector2(1200, 0)
[node name="地面" type="Sprite2D" parent="Ground/ParallaxBackground2/地面"]
texture = ExtResource("9_fjio5")
[node name="遮罩" type="Sprite2D" parent="Ground/ParallaxBackground2/地面"]
modulate = Color(0.14902, 0.14902, 0.14902, 0.533333)
position = Vector2(0, -101)
texture = ExtResource("10_bi3i1")
[node name="肉1" type="Sprite2D" parent="Ground/ParallaxBackground2/地面"]
position = Vector2(-143, -48)
texture = ExtResource("11_y18rp")
@ -449,6 +477,7 @@ texture = ExtResource("15_7x1vi")
[node name="CanvasLayer" type="CanvasLayer" parent="Ground"]
[node name="最终吃肉" type="RichTextLabel" parent="Ground/CanvasLayer"]
visible = false
light_mask = 3
custom_minimum_size = Vector2(500, 0)
anchors_preset = 8
@ -466,7 +495,7 @@ 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]"
text = "c03_s12_label8"
fit_content = true
horizontal_alignment = 1

View File

@ -40,14 +40,14 @@ func _ready() -> void:
var rotationg_steps := 0
var last_step_msec := 0
const TOTAL_STEPS = 6 * 3 # 转 3
const TOTAL_STEPS = 6 * 4 # 转 4
func _on_wheel_rotated(_radiant: float) -> void:
if rotationg_steps >= TOTAL_STEPS:
return
var time = Time.get_ticks_msec()
if time - last_step_msec < 200:
if time - last_step_msec < 100:
return
last_step_msec = time
if not wheel_sfx.playing:

View File

@ -21,14 +21,14 @@ func _on_ground_ready(_ground: Ground2D) -> void:
# 进入演出
var portal_2_x = $"../portal_2".global_position.x
SceneManager.get_player().global_position.x = portal_2_x
_fatty_game_finished_show()
_fatty_game_finished_show.call_deferred()
func _fatty_game_finished_show() -> void:
var player = SceneManager.get_player()
var camera = SceneManager.get_camera_marker()
SceneManager.lock_player(0, 20)
player.set_facing_direction(Vector2.LEFT)
SceneManager.lock_player(0, 21, true)
var monster = $"../棺材怪切肉" as AnimatedSprite2D
monster.show()
monster.play("砍桌子")
@ -49,8 +49,6 @@ func _fatty_game_finished_show() -> void:
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

View File

@ -20,7 +20,7 @@ const RESET_Y := -300.0
@export var right_static_collision: CollisionShape2D
@onready var footstep_sfx = $"Sfx2D棺材怪脚步声" as Sfx2D
@onready var chop_sfx = $"Sfx2D棺材怪切刀" as Sfx2D
@onready var chop_sfx = $"Sfx2D棺材怪切刀" as Sfx
@onready var remote_left_side = $"左侧" as RemoteTransform2D
@onready var remote_right_side = $"右侧" as RemoteTransform2D