From d83053d2d778b64d0f16bcfdde5343e54c0a9083 Mon Sep 17 00:00:00 2001 From: EsShen7 Date: Sat, 24 Jan 2026 21:14:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=BB=BA=E6=98=93=E7=A2=8E=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E5=9F=BA=E7=B1=BB=EF=BC=8C=E5=BC=80=E5=8F=91=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fragile_respawnable_platform.gd | 49 +++++++++++++++++++ .../fragile_respawnable_platform.gd.uid | 1 + .../fragile_respawnable_platform.tscn | 3 ++ _props/vine_platform/vine_platform.gd | 11 +++++ _props/vine_platform/vine_platform.gd.uid | 1 + _props/vine_platform/vine_platform.tscn | 3 ++ _scene/level1/l1_s10_derivative/l1_s10_1.tscn | 1 + _scene/level1/l1_s10_derivative/l1_s10_3.tscn | 1 + _scene/level1/l1_s10_derivative/l1_s10_4.tscn | 5 +- 9 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 _props/_prefabs/fragile_respawnable_platform/fragile_respawnable_platform.gd create mode 100644 _props/_prefabs/fragile_respawnable_platform/fragile_respawnable_platform.gd.uid create mode 100644 _props/_prefabs/fragile_respawnable_platform/fragile_respawnable_platform.tscn create mode 100644 _props/vine_platform/vine_platform.gd create mode 100644 _props/vine_platform/vine_platform.gd.uid create mode 100644 _props/vine_platform/vine_platform.tscn diff --git a/_props/_prefabs/fragile_respawnable_platform/fragile_respawnable_platform.gd b/_props/_prefabs/fragile_respawnable_platform/fragile_respawnable_platform.gd new file mode 100644 index 0000000..0028e8f --- /dev/null +++ b/_props/_prefabs/fragile_respawnable_platform/fragile_respawnable_platform.gd @@ -0,0 +1,49 @@ +extends AnimatableBody2D + +@export var shaking_target: Node2D +@export var shake_strength: float = 8.0 +@export var shake_duration: float = 0.25 +@export var shake_hz: float = 12.0 # 每秒抖几次(关键参数) + +signal shaking_finished() + +var _origin_pos: Vector2 +var _shaking := false +var _rng := RandomNumberGenerator.new() + +func _ready() -> void: + if not shaking_target: + shaking_target = self + _rng.randomize() + +func shaking() -> void: + if _shaking: + return + + if not shaking_target: + shaking_target = self + + _origin_pos = shaking_target.position + _shaking = true + + var end_timer := get_tree().create_timer(shake_duration) + var interval : float = 1.0 / max(shake_hz, 1.0) + var next_update := 0.0 + var current_offset := Vector2.ZERO + + while end_timer.time_left > 0.0: + next_update -= get_process_delta_time() + + if next_update <= 0.0: + current_offset = Vector2( + randf_range(-shake_strength, shake_strength), + randf_range(-shake_strength, shake_strength) + ) + next_update = interval + + shaking_target.position = _origin_pos + current_offset + await get_tree().process_frame + + shaking_target.position = _origin_pos + _shaking = false + shaking_finished.emit() diff --git a/_props/_prefabs/fragile_respawnable_platform/fragile_respawnable_platform.gd.uid b/_props/_prefabs/fragile_respawnable_platform/fragile_respawnable_platform.gd.uid new file mode 100644 index 0000000..413c27d --- /dev/null +++ b/_props/_prefabs/fragile_respawnable_platform/fragile_respawnable_platform.gd.uid @@ -0,0 +1 @@ +uid://dmamoiy8sl0bn diff --git a/_props/_prefabs/fragile_respawnable_platform/fragile_respawnable_platform.tscn b/_props/_prefabs/fragile_respawnable_platform/fragile_respawnable_platform.tscn new file mode 100644 index 0000000..4c1d98f --- /dev/null +++ b/_props/_prefabs/fragile_respawnable_platform/fragile_respawnable_platform.tscn @@ -0,0 +1,3 @@ +[gd_scene format=3 uid="uid://goua2e1q7qq6"] + +[node name="FragileShakingPlatform" type="Node2D"] diff --git a/_props/vine_platform/vine_platform.gd b/_props/vine_platform/vine_platform.gd new file mode 100644 index 0000000..fae2c76 --- /dev/null +++ b/_props/vine_platform/vine_platform.gd @@ -0,0 +1,11 @@ +extends Node + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass diff --git a/_props/vine_platform/vine_platform.gd.uid b/_props/vine_platform/vine_platform.gd.uid new file mode 100644 index 0000000..0791803 --- /dev/null +++ b/_props/vine_platform/vine_platform.gd.uid @@ -0,0 +1 @@ +uid://bog8pjjhrcd3g diff --git a/_props/vine_platform/vine_platform.tscn b/_props/vine_platform/vine_platform.tscn new file mode 100644 index 0000000..d6b2a88 --- /dev/null +++ b/_props/vine_platform/vine_platform.tscn @@ -0,0 +1,3 @@ +[gd_scene format=3 uid="uid://dfwups0m7a5m4"] + +[node name="VinePlatform" type="Node2D"] diff --git a/_scene/level1/l1_s10_derivative/l1_s10_1.tscn b/_scene/level1/l1_s10_derivative/l1_s10_1.tscn index 003e7ed..c6d93b0 100644 --- a/_scene/level1/l1_s10_derivative/l1_s10_1.tscn +++ b/_scene/level1/l1_s10_derivative/l1_s10_1.tscn @@ -111,6 +111,7 @@ _data = { point_count = 2 [node name="L1_S10_1" type="Node2D"] +editor_description = "藤蔓平台未制作" script = ExtResource("1_67t0m") metadata/_custom_type_script = "uid://5e157vdk6175" diff --git a/_scene/level1/l1_s10_derivative/l1_s10_3.tscn b/_scene/level1/l1_s10_derivative/l1_s10_3.tscn index 2bfb25b..6737feb 100644 --- a/_scene/level1/l1_s10_derivative/l1_s10_3.tscn +++ b/_scene/level1/l1_s10_derivative/l1_s10_3.tscn @@ -102,6 +102,7 @@ effect_apply_type = SubResource("Resource_hatj6") metadata/_custom_type_script = "uid://cdvgq0xqdbagk" [node name="L1_S10_3" type="Node2D"] +editor_description = "右侧开口可能考虑变成单向入口,目前若作为出口会影响游玩关卡顺序" script = ExtResource("1_cg8qb") metadata/_custom_type_script = "uid://5e157vdk6175" diff --git a/_scene/level1/l1_s10_derivative/l1_s10_4.tscn b/_scene/level1/l1_s10_derivative/l1_s10_4.tscn index 855939d..dc9e1fe 100644 --- a/_scene/level1/l1_s10_derivative/l1_s10_4.tscn +++ b/_scene/level1/l1_s10_derivative/l1_s10_4.tscn @@ -75,7 +75,7 @@ prop_state_map = Dictionary[int, ExtResource("8_42yu5")]({ metadata/_custom_type_script = "uid://fxpk2ot6otfh" [sub_resource type="RectangleShape2D" id="RectangleShape2D_nvw5u"] -size = Vector2(745, 356) +size = Vector2(745, 470.73492) [sub_resource type="Resource" id="Resource_ctwrc"] script = ExtResource("21_hsocq") @@ -118,6 +118,7 @@ _data = { point_count = 2 [node name="L1_S10_4" type="Node2D"] +editor_description = "右侧落石触发后击中龟裂岩层,形成两条通路:向上前往l1_s10_3;向下打通l1_s10_1的路" script = ExtResource("1_coo21") metadata/_custom_type_script = "uid://5e157vdk6175" @@ -168,7 +169,7 @@ effects = Array[ExtResource("14_jsj1s")]([ExtResource("16_1fy8b")]) position = Vector2(2173, -1994) [node name="CollisionShape2D" type="CollisionShape2D" parent="Props/PlayerTriggerVolumn"] -position = Vector2(-132.5, 87.265015) +position = Vector2(-132.5, 144.63257) shape = SubResource("RectangleShape2D_nvw5u") debug_color = Color(0.56463546, 0.55446386, 0.07705598, 0.41960785)