胖子游戏完整优化

This commit is contained in:
cakipaul 2025-08-07 18:28:19 +08:00
parent 6a85f37e7b
commit 03dd736f4f
14 changed files with 665 additions and 106 deletions

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_吕萍_背靠起身_屠宰间", &""],
},
"吕萍爬行":
{
@ -196,7 +197,7 @@ var ANIMATION_CONFIG = {
"walk_footstep": 0.5,
"run_footstep": 0.5,
"os_height": 130.0,
"light_height": 70.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_胖子游戏_爬起来"],
},
"小小小蝶":
{

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,21 +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)
layout_mode = 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
@ -302,15 +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)
layout_mode = 0
offset_left = 4.0
offset_top = -17.0
offset_right = 204.0
offset_bottom = 24.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
@ -319,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
@ -334,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 = "小手"
@ -382,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)
@ -395,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
@ -463,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")
@ -485,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:
@ -47,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:
@ -71,7 +80,7 @@ func _tween_display_label(node) -> void:
label.show()
var tween = create_tween()
tween.tween_property(label, "modulate:a", 1.0, 0.5)
tween.tween_interval(3.5)
tween.tween_interval(5.0)
tween.tween_property(label, "modulate:a", 0.0, 0.5)

View File

@ -144,7 +144,7 @@ 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(7496, 3)
@ -155,11 +155,12 @@ 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 = -157.0
offset_top = -114.0
offset_right = 343.0
offset_bottom = -73.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
@ -190,6 +191,7 @@ 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
@ -204,11 +206,12 @@ 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 = -143.0
offset_top = -122.0
offset_right = 357.0
offset_bottom = -81.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
@ -239,6 +242,7 @@ 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
@ -270,6 +274,7 @@ 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
@ -279,16 +284,17 @@ fit_content = true
horizontal_alignment = 1
[node name="AmbushLabel3" parent="Ground/DeployLayer" index="7" instance=ExtResource("11_sul0a")]
position = Vector2(4621, 52)
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 = -101.0
offset_top = -123.0
offset_right = 399.0
offset_bottom = -82.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
@ -298,7 +304,7 @@ fit_content = true
horizontal_alignment = 1
[node name="Ambush小孩山塌了" parent="Ground/DeployLayer" index="8" instance=ExtResource("11_sul0a")]
position = Vector2(5579.84, 32.01)
position = Vector2(5609.84, 32.01)
trigger_mode = "interact"
one_shot = false
hook_method = "collapse"
@ -308,11 +314,12 @@ 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 = 5401.0
offset_top = -69.0
offset_right = 5901.0
offset_bottom = -28.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
@ -425,7 +432,7 @@ layer = -1
[node name="小孩山塌了" type="AnimatedSprite2D" parent="Ground/ParallaxBackground2/山前地后"]
light_mask = 1025
position = Vector2(5642.84, -25.99)
position = Vector2(5672.84, -25.99)
sprite_frames = ExtResource("10_7x1vi")
animation = &"小孩山塌了"
offset = Vector2(-47.84, -0.01)

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