From b68b3f60c318f347c3643470d7c54d72fe85aff6 Mon Sep 17 00:00:00 2001 From: cakipaul Date: Wed, 6 Aug 2025 17:14:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=AB=E9=9F=B3=E7=9B=92=E6=8F=8F=E8=BE=B9->?= =?UTF-8?q?=E9=AB=98=E5=85=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- asset/art/gif/c02_八音盒/抽屉动画/0.png | Bin 7370 -> 7339 bytes asset/art/gif/c02_八音盒/抽屉动画/1.png | Bin 6528 -> 6056 bytes asset/art/gif/c02_八音盒/抽屉动画/2.png | Bin 5974 -> 5543 bytes scene/little_game/general/draggable.gd | 69 +++++++------ scene/little_game/general/draggable.tscn | 21 +--- scene/little_game/八音盒/八音盒.gd | 10 +- scene/little_game/八音盒/八音盒.tscn | 120 +++++++++++++++++++---- 7 files changed, 138 insertions(+), 82 deletions(-) diff --git a/asset/art/gif/c02_八音盒/抽屉动画/0.png b/asset/art/gif/c02_八音盒/抽屉动画/0.png index e20e005aa952d9176db03e32e0639b57e940d525..1f2ec46b72b061bf228b310c49e484d2b2674443 100644 GIT binary patch literal 7339 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 diff --git a/asset/art/gif/c02_八音盒/抽屉动画/1.png b/asset/art/gif/c02_八音盒/抽屉动画/1.png index f56636a89bd0a6558d071a2e6fb9953b19794df0..575354dfe7cd1eb9484d81556d8bb9511ca84ddd 100644 GIT binary patch literal 6056 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 B1-4#bf*{;O?kj=-a9MW@vP|>969iE`WLZL^ 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 literal 5974 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 Ef&+Vtz5oCK diff --git a/scene/little_game/general/draggable.gd b/scene/little_game/general/draggable.gd index 49679e68..1a85e2c9 100644 --- a/scene/little_game/general/draggable.gd +++ b/scene/little_game/general/draggable.gd @@ -46,14 +46,9 @@ var touching := false static var current_focusing_node: Draggable2D = null static var pending_enter_callables: Array[Callable] = [] -# 缓存常量 -const OUTLINE_THICKNESS := 1.0 -const OUTLINE_TWEEN_DURATION := 0.2 -const BUTTON_ALPHA_DURATION := 0.15 - # 缓存变量 -var _outline_tween: Tween -var _button_tween: Tween +var _highlight_tween: Tween +var _lights: Array[PointLight2D] = [] func _ready() -> void: @@ -61,9 +56,12 @@ func _ready() -> void: sprite.offset = sprite_offset if Engine.is_editor_hint(): return - # 初始化隐藏白边 - sprite.material.set_shader_parameter("thickness", 0.0) - + + # add lights + _travarse_add_light(self) + # 初始化熄灭 + _toggle_draggable_highlight(false) + # 安全检查 if has_signal("mouse_entered"): mouse_entered.connect(_on_mouse_entered) @@ -72,6 +70,13 @@ func _ready() -> void: printerr("Draggable2D: mouse_entered or mouse_exited signal not found.") +func _travarse_add_light(node: Node) -> void: + if node is PointLight2D: + _lights.append(node) + for c in node.get_children(): + _travarse_add_light(c) + + func is_focused() -> bool: return current_focusing_node == self @@ -82,15 +87,15 @@ func _on_mouse_entered() -> bool: return false if holding or is_focused(): return true - + # 尝试获得 current_focusing_node if current_focusing_node: if not pending_enter_callables.has(_on_mouse_entered): pending_enter_callables.append(_on_mouse_entered) return false - + current_focusing_node = self - _toggle_outline(true) + _toggle_draggable_highlight(true) return true @@ -99,13 +104,12 @@ func _on_mouse_exited() -> void: pending_enter_callables.erase(_on_mouse_entered) # freezing 不影响 mouse exited if is_focused() and not holding: + _toggle_draggable_highlight(false) current_focusing_node = null while pending_enter_callables.size() > 0: var c = pending_enter_callables.pop_front() if c.call(): break - _toggle_outline(false) - func _input(event: InputEvent) -> void: @@ -133,18 +137,13 @@ func _try_pick() -> void: if act_as_button: # 作为按钮,发送 picked 信号 picked.emit(self) - if _button_tween and _button_tween.is_running(): - _button_tween.kill() - _button_tween = create_tween() - _button_tween.tween_property(sprite.material, "shader_parameter/alpha_ratio", 1.0, BUTTON_ALPHA_DURATION) return - + if not is_focused(): return - + # reset rotation rotation = 0 - _toggle_outline(false) holding = true # z_index += 1 picked.emit(self) @@ -152,8 +151,6 @@ func _try_pick() -> void: func _drop() -> void: - if touching: - _toggle_outline(true) if holding: holding = false if not touching: @@ -165,18 +162,20 @@ func _drop() -> void: break # z_index -= 1 dropped.emit(self) + if not touching: + _toggle_draggable_highlight(false) -func _toggle_outline(display: bool) -> void: +func _toggle_draggable_highlight(display: bool) -> void: # 避免重复创建 tween - if _outline_tween and _outline_tween.is_running(): - _outline_tween.kill() - - _outline_tween = create_tween() - var target_thickness := OUTLINE_THICKNESS if display else 0.0 - _outline_tween.tween_property( - sprite.material, "shader_parameter/thickness", target_thickness, OUTLINE_TWEEN_DURATION - ) + if _highlight_tween and _highlight_tween.is_running(): + _highlight_tween.kill() + + if _lights.is_empty(): + printerr("Draggable2D: No lights found to toggle highlight.") + return + for l in _lights: + l.enabled = display func _exit_tree() -> void: @@ -192,7 +191,7 @@ func force_hold() -> void: return if not is_focused() and current_focusing_node: current_focusing_node._drop() - _toggle_outline(false) + _toggle_draggable_highlight(true) current_focusing_node = self holding = true - picked.emit(self) \ No newline at end of file + picked.emit(self) diff --git a/scene/little_game/general/draggable.tscn b/scene/little_game/general/draggable.tscn index a0962073..4a663239 100644 --- a/scene/little_game/general/draggable.tscn +++ b/scene/little_game/general/draggable.tscn @@ -1,26 +1,8 @@ -[gd_scene load_steps=7 format=3 uid="uid://bg7oictr1wgex"] +[gd_scene load_steps=3 format=3 uid="uid://bg7oictr1wgex"] [ext_resource type="Script" uid="uid://f217t2lytw84" path="res://scene/little_game/general/draggable.gd" id="1_txku8"] -[ext_resource type="Shader" uid="uid://cgy5ujo5afab2" path="res://asset/shader/outline.gdshader" id="2_pq7cf"] [ext_resource type="Texture2D" uid="uid://di0gqyxa0c3eg" path="res://asset/art/little_game/八音盒/新版贴图/小婵玩偶.png" id="3_de4ll"] -[sub_resource type="Gradient" id="Gradient_h88gi"] -colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0) - -[sub_resource type="GradientTexture1D" id="GradientTexture1D_pe1ot"] -gradient = SubResource("Gradient_h88gi") - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_pe1ot"] -resource_local_to_scene = true -shader = ExtResource("2_pq7cf") -shader_parameter/color = SubResource("GradientTexture1D_pe1ot") -shader_parameter/alpha_ratio = 1.0 -shader_parameter/gradientResolution = 10 -shader_parameter/thickness = 1.0 -shader_parameter/tolerance = 0.0 -shader_parameter/diagonals = true -shader_parameter/rounded = true - [node name="Draggable2D" type="Area2D"] script = ExtResource("1_txku8") texture = ExtResource("3_de4ll") @@ -28,5 +10,4 @@ texture = ExtResource("3_de4ll") [node name="Sprite2D" type="Sprite2D" parent="."] unique_name_in_owner = true y_sort_enabled = true -material = SubResource("ShaderMaterial_pe1ot") texture = ExtResource("3_de4ll") diff --git a/scene/little_game/八音盒/八音盒.gd b/scene/little_game/八音盒/八音盒.gd index 9e58c179..4a7869e9 100644 --- a/scene/little_game/八音盒/八音盒.gd +++ b/scene/little_game/八音盒/八音盒.gd @@ -94,12 +94,8 @@ func _ready() -> void: _chechout_stage(stage, false) -func _toggle_side_handle_outline(display: bool): - var tween = create_tween() - if display: - tween.tween_property(side_handle.material, "shader_parameter/thickness", 1.0, 0.2) - else: - tween.tween_property(side_handle.material, "shader_parameter/thickness", 0.0, 0.2) +func _toggle_side_handle_hightlight(display: bool): + side_handle.get_node("PointLight2D").enabled = display func _on_box_picked(_node): @@ -309,7 +305,7 @@ func _chechout_stage(s: int, play_sfx := true) -> void: sfx_open_lid.play() 4: box_closed.visible = true - _toggle_side_handle_outline(display_handle_outline) + _toggle_side_handle_hightlight(display_handle_outline) func _settle_plug_positions(): diff --git a/scene/little_game/八音盒/八音盒.tscn b/scene/little_game/八音盒/八音盒.tscn index 6ef01bc0..4878ca37 100644 --- a/scene/little_game/八音盒/八音盒.tscn +++ b/scene/little_game/八音盒/八音盒.tscn @@ -1,11 +1,10 @@ -[gd_scene load_steps=47 format=3 uid="uid://beleib3mmu0af"] +[gd_scene load_steps=45 format=3 uid="uid://beleib3mmu0af"] [ext_resource type="Texture2D" uid="uid://2xbl572hv2qf" path="res://asset/art/little_game/八音盒/背景.png" id="1_j0wst"] [ext_resource type="Script" uid="uid://bian8ga7cet8k" path="res://scene/little_game/八音盒/八音盒.gd" id="2_opptd"] [ext_resource type="Texture2D" uid="uid://daxg4b7lu1ep6" path="res://asset/art/little_game/八音盒/插销动画/插销-1.png" id="3_etora"] [ext_resource type="Texture2D" uid="uid://cik6ro8nowsd3" path="res://asset/art/little_game/八音盒/插销动画/插销-2.png" id="4_ubbcw"] [ext_resource type="AudioStream" uid="uid://duxo1jopqqf0q" path="res://asset/audio/sfx/交互/序章/04_书店内_移动书本.ogg" id="4_ytjup"] -[ext_resource type="Shader" uid="uid://cgy5ujo5afab2" path="res://asset/shader/outline.gdshader" id="5_dtoml"] [ext_resource type="AudioStream" uid="uid://gxoubqjqpuks" path="res://asset/audio/sfx/交互/序章/04_书店内_点击书本.ogg" id="5_m5jrq"] [ext_resource type="Texture2D" uid="uid://bslr2p2dgymxm" path="res://asset/art/little_game/八音盒/插销动画/插销-3.png" id="5_mxndl"] [ext_resource type="Texture2D" uid="uid://bp8o30lfc7xrx" path="res://asset/art/little_game/八音盒/插销动画/插销-4.png" id="6_2lerk"] @@ -65,22 +64,6 @@ _data = { &"handle_animation": SubResource("Animation_j415e") } -[sub_resource type="Gradient" id="Gradient_cbhp3"] -colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0) - -[sub_resource type="GradientTexture1D" id="GradientTexture1D_28n4a"] -gradient = SubResource("Gradient_cbhp3") - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_ljgfp"] -shader = ExtResource("5_dtoml") -shader_parameter/color = SubResource("GradientTexture1D_28n4a") -shader_parameter/alpha_ratio = 1.0 -shader_parameter/gradientResolution = 10 -shader_parameter/thickness = 1.0 -shader_parameter/tolerance = 0.0 -shader_parameter/diagonals = true -shader_parameter/rounded = true - [sub_resource type="SpriteFrames" id="SpriteFrames_t7gu7"] animations = [{ "frames": [{ @@ -116,6 +99,15 @@ animations = [{ "speed": 5.0 }] +[sub_resource type="Gradient" id="Gradient_wq2wm"] +offsets = PackedFloat32Array(1) +colors = PackedColorArray(1, 1, 1, 1) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_sg8mt"] +gradient = SubResource("Gradient_wq2wm") +width = 128 +height = 128 + [sub_resource type="RectangleShape2D" id="RectangleShape2D_cbhp3"] resource_local_to_scene = true size = Vector2(290, 60) @@ -180,13 +172,19 @@ offset_bottom = 188.0 [node name="SideHandle" type="AnimatedSprite2D" parent="All"] show_behind_parent = true -material = SubResource("ShaderMaterial_ljgfp") +light_mask = 513 position = Vector2(-6.5, 40) sprite_frames = SubResource("SpriteFrames_t7gu7") centered = false +[node name="PointLight2D" type="PointLight2D" parent="All/SideHandle"] +position = Vector2(469.5, 141) +energy = 1.5 +range_layer_max = 10 +range_item_cull_mask = 512 +texture = SubResource("GradientTexture2D_sg8mt") + [node name="ClosedBox" parent="All" instance=ExtResource("16_h88gi")] -visible = false position = Vector2(277, 194.5) act_as_button = true item_name = "盒子" @@ -198,7 +196,14 @@ limit_rect = Rect2(150, 150, 220, 70) position = Vector2(2.99999, -33.5) polygon = PackedVector2Array(123, -48, -102, -48, -102, -45.8, -104.8, -43, -106.3, -43, -147.3, 42, -149.3, 42, -139, 110.3, -139, 112.5, -135, 119.4, -135, 120, 155.1, 120, 157.4, 114, 158.7, 114, 167.7, 55, 169, 55, 169, 43.5, 123, -45.6) +[node name="PointLight2D" type="PointLight2D" parent="All/ClosedBox"] +position = Vector2(3, -35) +energy = 1.5 +range_layer_max = 10 +texture = ExtResource("22_rdaqv") + [node name="OpenedBox" type="Sprite2D" parent="All"] +visible = false position = Vector2(-48, 38) texture = ExtResource("16_dtoml") centered = false @@ -216,10 +221,22 @@ sprite_offset = Vector2(3, -35) texture = ExtResource("17_gm7pw") limit_rect = Rect2(150, 150, 220, 70) +[node name="Sprite2D" parent="All/OpenedBox/Panel/Draggable2D1" index="0"] +light_mask = 3 +texture = ExtResource("17_gm7pw") +offset = Vector2(3, -35) + [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="All/OpenedBox/Panel/Draggable2D1"] position = Vector2(3.20175, -33.5559) polygon = PackedVector2Array(2.5, -45.5, -8.5, -45.5, -9.3, -44.5, -11.9, -44.5, -9.5, -31.1, -9.5, -30.4, -15.2, -25.5, -17.1, -25.5, -18.5, -19.2, -18.5, -3.9, -14.5, -0.700001, -13.5, 33.3, -14.5, 34.8, -14.5, 41.7, -7.7, 45.5, 4.3, 45.5, 6.3, 43.5, 8.1, 43.5, 9.5, 37.7, 9.5, 35.7, 5.8, 32, 6.3, 31.5, 8.7, 31.5, 7.5, 16.5, 7.5, -5.5, 13.8, -5.5, 18.5, -15.9, 18.5, -26.8, 16.2, -27.8, 9.5, -22.5, 9.5, -20.5, 8.6, -20.5, 3.1, -28.8, 6.5, -38.1, 6.5, -42.5) +[node name="PointLight2D" type="PointLight2D" parent="All/OpenedBox/Panel/Draggable2D1"] +position = Vector2(3.20175, -33.5559) +energy = 0.7 +range_layer_max = 10 +range_item_cull_mask = 2 +texture = SubResource("GradientTexture2D_sg8mt") + [node name="Draggable2D2" parent="All/OpenedBox/Panel" instance=ExtResource("16_h88gi")] position = Vector2(286.5, 197) rotation = 1.58777 @@ -228,10 +245,22 @@ sprite_offset = Vector2(1, -34) texture = ExtResource("18_8vbnc") limit_rect = Rect2(150, 150, 220, 70) +[node name="Sprite2D" parent="All/OpenedBox/Panel/Draggable2D2" index="0"] +light_mask = 5 +texture = ExtResource("18_8vbnc") +offset = Vector2(1, -34) + [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="All/OpenedBox/Panel/Draggable2D2"] position = Vector2(1.42264, -34.029) polygon = PackedVector2Array(11.5, -41.9, 2, -45.5, -5.5, -45.5, -9.4, -40.5, -12.1, -40.5, -10.5, -34.5, -10.5, -31.5, -6, -27.9, -10.3, -23.5, -12.3, -23.5, -12.5, -21.9, -12.5, -7.8, -10.9, -3.5, -12.5, 9.4, -12.5, 29.3, -9.5, 32.3, -12.5, 34.4, -12.5, 41.7, -5.7, 45.5, 6.3, 45.5, 8.3, 43.5, 10.1, 43.5, 11.5, 37.7, 11.5, 35.7, 8, 32.2, 10.2, 30.5, 12.5, 30.5, 12.5, 28.1, 8.5, -2.5, 8.5, -3.6, 12.2, -6.5, 12.5, -19.6, 5.4, -29.3, 11.5, -37.9) +[node name="PointLight2D" type="PointLight2D" parent="All/OpenedBox/Panel/Draggable2D2"] +position = Vector2(0.439749, -33.0122) +energy = 0.7 +range_layer_max = 10 +range_item_cull_mask = 4 +texture = SubResource("GradientTexture2D_sg8mt") + [node name="Draggable2D3" parent="All/OpenedBox/Panel" instance=ExtResource("16_h88gi")] position = Vector2(354, 169) rotation = -1.26607 @@ -240,10 +269,23 @@ sprite_offset = Vector2(1, -23) texture = ExtResource("19_858bj") limit_rect = Rect2(150, 150, 220, 70) +[node name="Sprite2D" parent="All/OpenedBox/Panel/Draggable2D3" index="0"] +light_mask = 9 +texture = ExtResource("19_858bj") +offset = Vector2(1, -23) + [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="All/OpenedBox/Panel/Draggable2D3"] +light_mask = 9 position = Vector2(1.18075, -22.9097) polygon = PackedVector2Array(9.5, -23.1, 4.6, -26.3, 2.5, -25.2, 2.5, -24, -6.6, -24, -8.6, -21, -10.5, -21, -10.5, -18.8, -9.5, -15, -9.5, -8.9, -6.5, -6.9, -10.5, -2.8, -10.5, 16, -7.4, 18.3, -10, 20, -10.5, 29.5, -8.5, 31, -8.5, 32, 6.3, 32, 8.3, 30, 10.5, 30, 10.5, 27.6, 7, 17.3, 8.6, 15, 10.5, 15, 10.5, 13, 7.2, -9, 9.5, -20.8) +[node name="PointLight2D" type="PointLight2D" parent="All/OpenedBox/Panel/Draggable2D3"] +position = Vector2(0.439749, -33.0122) +energy = 0.7 +range_layer_max = 10 +range_item_cull_mask = 8 +texture = SubResource("GradientTexture2D_sg8mt") + [node name="Draggable2D4" parent="All/OpenedBox/Panel" instance=ExtResource("16_h88gi")] position = Vector2(310, 173) rotation = -1.14307 @@ -251,10 +293,21 @@ item_name = "蝉" sprite_offset = Vector2(-4, -23) limit_rect = Rect2(150, 150, 220, 70) +[node name="Sprite2D" parent="All/OpenedBox/Panel/Draggable2D4" index="0"] +light_mask = 17 +offset = Vector2(-4, -23) + [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="All/OpenedBox/Panel/Draggable2D4"] position = Vector2(-4.7032, -24.7816) polygon = PackedVector2Array(12, -29.6, -2.9, -33, -5, -33, -5, -31.3, -7, -30.2, -7, -25.3, -1.3, -17.7, -15, -5.9, -15, -3.2, -11.8, 0, -7.3, 0, -3.9, -2.8, -5, 1.8, -5, 6.7, -1, 12, -1, 17.9, -5.7, 21, -8, 21, -8, 29, -4, 32, -4, 33, 10.8, 33, 12.8, 31, 14.6, 31, 16, 25.2, 16, 22.8, 9, 18.8, 9, 15.8, 9.8, 15, 11.8, 15, 12.8, 7, 14.9, 7, 11, -3.5, 11, -8.4, 16, -17.5, 16, -27.3, 15.5, -29, 12, -29) +[node name="PointLight2D" type="PointLight2D" parent="All/OpenedBox/Panel/Draggable2D4"] +position = Vector2(0.439749, -33.0122) +energy = 0.7 +range_layer_max = 10 +range_item_cull_mask = 16 +texture = SubResource("GradientTexture2D_sg8mt") + [node name="Marker2D1" type="Marker2D" parent="All/OpenedBox/Panel"] position = Vector2(198, 178) @@ -284,6 +337,10 @@ limit_rect = Rect2(150, 150, 220, 70) position = Vector2(-12, 9) shape = SubResource("RectangleShape2D_cbhp3") +[node name="PointLight2D" type="PointLight2D" parent="All/BrokenBox/Draggable抽屉"] +range_layer_max = 10 +texture = ExtResource("28_b3w8p") + [node name="Draggable照片" parent="All" instance=ExtResource("16_h88gi")] position = Vector2(241, 71) act_as_button = true @@ -295,6 +352,11 @@ limit_rect = Rect2(150, 150, 220, 70) position = Vector2(6.4373e-06, -9.53674e-07) polygon = PackedVector2Array(31.5, -37.5, 29.7, -38, 18.4, -38, -19.7, -28.9, -26, -32, -30.7, -32, -32.5, -28.4, -32.5, -23.2, -24.5, -15.2, -24.5, -9.6, -20.5, -8.3, -20.5, 4.5, -17.7, 10, -14.5, 30.3, -14.5, 32, -10.5, 35, -10.5, 37, 3.3, 37, 4.5, 26.1, 6.2, 25, 9.3, 25, 7.5, 19.6, 10.6, 14, 13.1, 14, 10.5, 4, 10.5, 3.2, 21, -2, 23.6, -2, 31.6, -14, 32.5, -14, 32.5, -22.4, 31.5, -28.3) +[node name="PointLight2D" type="PointLight2D" parent="All/Draggable照片"] +energy = 0.7 +range_layer_max = 10 +texture = ExtResource("19_cbhp3") + [node name="Drawer" type="Node2D" parent="All"] visible = false position = Vector2(20.5, 0) @@ -315,6 +377,10 @@ limit_rect = Rect2(150, 150, 220, 70) position = Vector2(1, 7.62939e-06) shape = SubResource("CircleShape2D_wq2wm") +[node name="PointLight2D" type="PointLight2D" parent="All/Drawer/Draggable1"] +range_layer_max = 10 +texture = ExtResource("30_tgpfj") + [node name="Draggable2" parent="All/Drawer" instance=ExtResource("16_h88gi")] position = Vector2(249.5, 143) rotation = -0.254158 @@ -326,6 +392,10 @@ limit_rect = Rect2(150, 150, 220, 70) [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="All/Drawer/Draggable2"] polygon = PackedVector2Array(5.5, -37.9, 3, -36.8, 3, -35.8, 1, -34.7, 1, -30.5, 2.2, -29.6, 1.2, -28.1, -4.2, -33.5, -6.8, -33.5, -10, -30.3, -10, -27.5, -12.7, -25.5, -14.2, -25.5, -15, -31.5, -15, -35.5, -24.3, -31.5, -26.3, -31.5, -27.4, -29, -24, -25.7, -24, -23.3, -24.8, -22.5, -26.6, -22.5, -27.5, -18.8, -35, -26.3, -35, -28.5, -43.8, -28.5, -52.8, -19.5, -54.7, -19.5, -56.7, -7.5, -58.1, -7.5, -57, 10.6, -57, 16.1, -53, 22.1, -53, 24.5, -44, 31.4, -44, 33.5, -31.1, 33.5, -27, 40.1, -27, 42.3, -19, 43.2, -19, 44.5, 10.1, 44.5, 15.5, 35.8, 18.8, 36.5, 22.9, 36.5, 26.8, 43.5, 42.8, 43.5, 45.8, 40.5, 49.1, 40.5, 55.1, 31.5, 57.4, 31.5, 48, -20.9, 48, -22.3, 38, -32.3, 38, -34.5, 28.4, -34.5, 27, -28.7, 27, -25.6, 25.4, -24.6, 23, -26.5, 23, -27.8, 20.5, -28.9, 17.4, -25.9) +[node name="PointLight2D" type="PointLight2D" parent="All/Drawer/Draggable2"] +range_layer_max = 10 +texture = ExtResource("31_wq2wm") + [node name="Draggable3" parent="All/Drawer" instance=ExtResource("16_h88gi")] position = Vector2(368.5, 175) rotation = 0.330288 @@ -338,6 +408,11 @@ limit_rect = Rect2(150, 150, 220, 70) position = Vector2(-1.99999, 0.999999) polygon = PackedVector2Array(-11, -44.2, -11, -42.1, -14, -40.1, -14, -34.4, -9, -26.4, -9, -23.8, -5.6, -22.1, -12, -14.8, -12, -14.2, -27.6, -4, -29.2, -4, -30.3, -1.9, -27.1, 3, -20.5, 3, -8.7, -3.4, -11, 6.8, -11, 11.7, -5, 18.8, -5, 29, -12.7, 35, -15, 35, -15, 43.8, -11, 47.8, -11, 49.3, -2.4, 53, 6.8, 53, 15.7, 45, 18, 45, 18, 36, 13, 32, 13, 30, 8, 30, 8, 25.6, 10, 23, 11.7, 23, 13.7, 12, 15.6, 12, 11.5, -3, 12, -9.9, 12, -15.4, 19, -25, 21, -25, 21, -34.8, 16.8, -39, 13.8, -39, 12, -35.7, 12, -41.8) +[node name="PointLight2D" type="PointLight2D" parent="All/Drawer/Draggable3"] +position = Vector2(0, -1.52588e-05) +range_layer_max = 10 +texture = ExtResource("32_sg8mt") + [node name="BoxAnimation" type="AnimatedSprite2D" parent="All"] visible = false position = Vector2(302.5, 249) @@ -372,3 +447,8 @@ texture = ExtResource("35_wq2wm") position = Vector2(3, -0.98594) range_item_cull_mask = 32 texture = ExtResource("36_sg8mt") + +[editable path="All/OpenedBox/Panel/Draggable2D1"] +[editable path="All/OpenedBox/Panel/Draggable2D2"] +[editable path="All/OpenedBox/Panel/Draggable2D3"] +[editable path="All/OpenedBox/Panel/Draggable2D4"]