棺材怪演出

This commit is contained in:
cakipaul 2025-07-31 04:48:16 +08:00
parent 15bca41f12
commit 8c97510712
8 changed files with 191 additions and 87 deletions

View File

@ -27,8 +27,9 @@ c03_li_paperwoman: 0:初始化隐藏 1:显示纸人 2:纸舌头完成 3:给药
c03_drug_game: 0:初始化 1:获得药方 2:获得药包
# 囚室海报
c03_prison_flyer: 0:初始化 1:刮开
# 囚室门锁
c03_prison_lock: 0:初始化 1:打开
# 棺材房
c03_coffin: 0:初始化 1:拿走刀 2:拿走纸条_棺材怪演出 3:演出完成
# 绞肉机
c03_meat_grinder: 0:初始化 1:已装转盘 2:绞肉机演出 3:演出结束
# 结尾井边演出

View File

@ -59,9 +59,9 @@ ui_center_notify_c03药车不能再取药材,同种药材只能取出一份,,,,,
ui_center_notify_c03放到碗中或原处,药材只能放到碗中或原处,,,,,
ui_center_notify_c03碗口放入药材,从碗口处放入药材,,,,,
ui_center_notify_c03准备研磨,已准备好研磨,,,,,
ui_center_notify_c03粘刀把,需要粘上刀把,,,,,
ui_center_notify_c03绞肉机缺少转轮,缺少转轮,按 E 使用道具,,,,,
ui_获得道具,获得道具,,,,,Item Obtained
ui_获得重要物品,重要物品,,,,,
ui_退出,退出,,,,,Exit
ui_阅读,阅读,,,,,Read
ui_检阅,检阅,,,,,Examine

1 keys zh_CN _character _notes _tags zh_SH en
59 ui_center_notify_c03放到碗中或原处 药材只能放到碗中或原处
60 ui_center_notify_c03碗口放入药材 从碗口处放入药材
61 ui_center_notify_c03准备研磨 已准备好研磨
62 ui_center_notify_c03粘刀把 需要粘上刀把
63 ui_center_notify_c03绞肉机缺少转轮 缺少转轮,按 E 使用道具
64 ui_获得道具 获得道具 Item Obtained
ui_获得重要物品 重要物品
65 ui_退出 退出 Exit
66 ui_阅读 阅读 Read
67 ui_检阅 检阅 Examine

View File

@ -67,9 +67,9 @@
药材只能放到碗中或原处 [ID:ui_center_notify_c03放到碗中或原处]
从碗口处放入药材 [ID:ui_center_notify_c03碗口放入药材]
已准备好研磨 [ID:ui_center_notify_c03准备研磨]
需要粘上刀把 [ID:ui_center_notify_c03粘刀把]
缺少转轮,按 E 使用道具 [ID:ui_center_notify_c03绞肉机缺少转轮]
获得道具 [ID:ui_获得道具]
退出 [ID:ui_退出]
阅读 [ID:ui_阅读]

View File

@ -4,7 +4,7 @@ extends AnimationRoot
# 覆盖该方法
func _default_data() -> Dictionary:
return {"monster_woken": false}
return {}
func _ready() -> void:
@ -27,24 +27,27 @@ func _setup_node_reference() -> void:
func _on_ground_ready() -> void:
closeup棺材特写.exit.connect(_on_coffin_exit)
if data["monster_woken"]:
closeup棺材特写.hide()
# c03_coffin: 0:初始化 1:拿走刀 2:拿走纸条_棺材怪演出 3:演出完成
var stage = EventManager.get_stage("c03_coffin")
if stage == 2:
_coffin_monster_climb_out()
elif stage == 3:
sfx_2d棺材呼吸声.stop()
func _on_coffin_exit(arg) -> void:
if arg:
set_data("monster_woken", true)
_coffin_monster_climb_out()
func _coffin_monster_climb_out() -> void:
await Util.wait(2.0)
SceneManager.lock_player()
play("monster_first_contact")
await Util.wait(1.0)
SceneManager.pop_debug_dialog_info("音效", "棺材怪对峙amb+爬行sfx")
await animation_finished
SceneManager.unlock_player()
EventManager.set_stage("c03_coffin", 3)
func monster_disappear_ambush() -> void:

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=22 format=3 uid="uid://dfln301xllqpn"]
[gd_scene load_steps=23 format=3 uid="uid://dfln301xllqpn"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_8vqn6"]
[ext_resource type="Script" uid="uid://dxt2u1jajrm1g" path="res://scene/ground/scene/c03/s09_棺材房.gd" id="2_8vqn6"]
@ -15,6 +15,7 @@
[ext_resource type="Script" uid="uid://cphfob11f7atx" path="res://addons/property-inspector/pro_animation_sprite2d/pro_animated_sprite.gd" id="10_t7o3d"]
[ext_resource type="AudioStream" uid="uid://cfsx6yqrw5gp4" path="res://asset/audio/sfx/交互/第二章/棺材怪呼吸.ogg" id="11_qr48f"]
[ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="13_alans"]
[ext_resource type="Script" uid="uid://0wjaho6qkg6s" path="res://manager/event_manager/event_binder.gd" id="13_fijc5"]
[ext_resource type="Texture2D" uid="uid://d3rl4pyal4bao" path="res://asset/art/scene/c03/s09_棺材房/角落胖子干尸.png" id="14_htuhx"]
[ext_resource type="AudioStream" uid="uid://b8gsppgtp8tdk" path="res://asset/audio/sfx/旧版/lvping/footstep_earth_left.ogg" id="15_qr48f"]
[ext_resource type="Texture2D" uid="uid://cylsq5cvhlp18" path="res://asset/art/tool/point_light.png" id="15_rcrkk"]
@ -36,7 +37,7 @@ tracks/0/keys = {
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("%Sfx2D棺材怪移动声:playing")
tracks/1/path = NodePath("DeployLayer/Pro棺材怪/Sfx2D棺材怪移动声:playing")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
@ -48,7 +49,7 @@ tracks/1/keys = {
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("%Sfx2D棺材呼吸声:position")
tracks/2/path = NodePath("DeployLayer/Sfx2D棺材呼吸声:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
@ -105,10 +106,22 @@ tracks/6/keys = {
"update": 1,
"values": [&"棺材怪走路"]
}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("DeployLayer/Pro棺材怪2/Ambush棺材怪消失:enabled")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_alans"]
resource_name = "monster_first_contact"
length = 7.0
length = 10.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
@ -116,7 +129,7 @@ tracks/0/path = NodePath("DeployLayer/Pro棺材怪/呼吸声跟随1:remote_path"
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 3.5),
"times": PackedFloat32Array(0, 4.83334),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [NodePath("../../Sfx2D棺材呼吸声"), NodePath("")]
@ -128,7 +141,7 @@ tracks/1/path = NodePath("DeployLayer/Pro棺材怪:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 2.33333, 3.5),
"times": PackedFloat32Array(0, 3.66667, 4.83334),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector2(453, -100), Vector2(453, -100), Vector2(-100, -100)]
@ -140,7 +153,7 @@ tracks/2/path = NodePath("DeployLayer/Pro棺材怪2:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 3.93333, 5.53333),
"times": PackedFloat32Array(0, 5.83333, 7.26667),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector2(-88, 12), Vector2(-88, 12), Vector2(50, 12)]
@ -152,7 +165,7 @@ tracks/3/path = NodePath("DeployLayer/Pro棺材怪2/呼吸声跟随2:remote_path
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 3.56667),
"times": PackedFloat32Array(0, 5),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [NodePath(""), NodePath("../../Sfx2D棺材呼吸声")]
@ -160,14 +173,14 @@ tracks/3/keys = {
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("%Sfx2D棺材怪移动声:playing")
tracks/4/path = NodePath("DeployLayer/Pro棺材怪/Sfx2D棺材怪移动声:playing")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(2.37),
"transitions": PackedFloat32Array(1),
"times": PackedFloat32Array(3.70334, 5.66667),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [true]
"values": [true, false]
}
tracks/5/type = "method"
tracks/5/imported = false
@ -176,7 +189,7 @@ tracks/5/path = NodePath("MainPlayer")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0, 2.7),
"times": PackedFloat32Array(0, 4.3),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [Vector2(1, 0)],
@ -193,11 +206,23 @@ tracks/6/path = NodePath("DeployLayer/Pro棺材怪2:animation")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(5.83333),
"times": PackedFloat32Array(7.7),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [&"棺材怪受惊"]
}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("DeployLayer/Pro棺材怪2/Ambush棺材怪消失:enabled")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(9.4),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"]
_data = {
@ -255,7 +280,6 @@ sign_mark_offset = Vector2(27.55, 0)
action = 3
[node name="Sfx2D棺材呼吸声" type="AudioStreamPlayer2D" parent="Ground/DeployLayer" index="4"]
unique_name_in_owner = true
position = Vector2(341, 45)
stream = ExtResource("11_qr48f")
autoplay = true
@ -273,6 +297,14 @@ packed_scene = ExtResource("7_klnhf")
sign_mark_offset = Vector2(0, -21.53)
collision_width_and_x = Vector2(100.52, 0)
[node name="EventBinder" type="Node" parent="Ground/DeployLayer/Closeup棺材特写"]
script = ExtResource("13_fijc5")
updater_event = &"c03_coffin"
updater_mode = "shower"
updater_ease_duration = 0.0
updater_stages = Array[int]([0, 1])
metadata/_custom_type_script = "uid://0wjaho6qkg6s"
[node name="Pro棺材怪" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="6"]
light_mask = 3
position = Vector2(611, -65)
@ -283,7 +315,6 @@ script = ExtResource("10_t7o3d")
metadata/_custom_type_script = "uid://cphfob11f7atx"
[node name="Sfx2D棺材怪移动声" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/Pro棺材怪"]
unique_name_in_owner = true
position = Vector2(15, -22)
stream = ExtResource("15_qr48f")
volume_db = 10.0
@ -296,6 +327,7 @@ metadata/_custom_type_script = "uid://wapo47a1oddf"
[node name="PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/Pro棺材怪"]
position = Vector2(-19, -27)
energy = 0.35
range_item_cull_mask = 2
texture = ExtResource("15_rcrkk")
@ -315,9 +347,11 @@ metadata/_custom_type_script = "uid://cphfob11f7atx"
[node name="Ambush棺材怪消失" parent="Ground/DeployLayer/Pro棺材怪2" instance=ExtResource("13_alans")]
position = Vector2(155, 45)
enabled = false
hook_method = "monster_disappear_ambush"
[node name="PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/Pro棺材怪2"]
position = Vector2(-20, 4)
energy = 0.35
range_item_cull_mask = 2
texture = ExtResource("15_rcrkk")

View File

@ -76,5 +76,4 @@ func _unhandled_input(event: InputEvent) -> void:
return
if GlobalConfig.DEBUG:
print("无效的道具:%s" % prop)
$SfxInvalid.play()
prop_hud.on_toggle_invalid_prop()

View File

@ -3,34 +3,71 @@ extends CanvasLayer
@warning_ignore("unused_signal")
signal exit(arg)
@onready var hover_knife = %"Hover刀" as HoverLightClickArea
@onready var hover_note = %"Hover纸条" as HoverLightClickArea
# c03_coffin: 0:初始化 1:拿走刀 2:拿走纸条_棺材怪演出 3:演出完成
var coffin_stage := 0
func _ready() -> void:
layer = GlobalConfig.CANVAS_LAYER_LITTLE_GAME
coffin_stage = EventManager.get_stage("c03_coffin")
hover_knife.interacted.connect(_on_knife_interacted)
hover_note.interacted.connect(_on_note_interacted)
if coffin_stage == 0:
SceneManager.pop_center_notification("ui_center_notify_c03粘刀把")
elif coffin_stage == 1:
hover_knife.hide()
hover_note.freezing = false
elif coffin_stage == 2:
hover_knife.hide()
hover_note.hide()
func _on_knife_interacted() -> void:
hover_knife.hide()
hover_note.freezing = false
EventManager.set_stage("c03_coffin", 1)
SceneManager.enable_prop_item("prop_菜刀")
SceneManager.disable_prop_item("prop_浆糊")
SceneManager.disable_prop_item("prop_刀把")
### TODO 读纸条时,开始准备横版的呼吸声(呼吸声与棺材怪爬墙活动分在两个音频文件)
# 退出阅读马上进入横版,出现棺材怪爬墙活动的声音
func _read() -> void:
SceneManager.pop_debug_dialog_info("音效", "棺材怪呼吸的声音A")
SceneManager.pop_debug_dialog_info("音效", "棺材怪爬墙活动的声音B")
func _monster_show() -> void:
SceneManager.lock_player()
var player = SceneManager.get_player()
player.set_facing_direction(Vector2.RIGHT)
# 惊讶
await SceneManager.pop_os_with_str("")
await Util.wait(2.0)
# 棺材怪开始行动
player.set_facing_direction(Vector2.LEFT)
func _on_note_interacted() -> void:
EventManager.set_stage("c03_coffin", 2)
hover_note.hide()
%"沾血的纸条".show()
displaying_bloody_note = true
var displaying_bloody_note := false
# 0: 刀柄 1: 浆糊 2: 刀把
var knife_state := 0
func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed("cancel") and displaying_bloody_note:
if event.is_action_pressed("cancel"):
get_viewport().set_input_as_handled()
displaying_bloody_note = false
%"沾血的纸条".hide()
SceneManager.reset_temp_disabled_props()
exit.emit(displaying_bloody_note)
if event.is_action_pressed("interact"):
get_viewport().set_input_as_handled()
var prop = SceneManager.get_current_prop()
var valid = false
if knife_state == 0:
valid = prop == "prop_浆糊"
if valid:
knife_state = 1
$"Sfx使用浆糊".play()
%"胶水".show()
SceneManager.disable_prop_item_temp("prop_浆糊")
elif knife_state == 1:
valid = prop == "prop_刀把"
if valid:
knife_state = 2
%"刀有柄".show()
SceneManager.disable_prop_item_temp("prop_刀把")
hover_knife.freezing = false
if not valid:
SceneManager.get_prop_hud().on_toggle_invalid_prop()

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=14 format=3 uid="uid://btmen4wc4uhhj"]
[gd_scene load_steps=17 format=3 uid="uid://btmen4wc4uhhj"]
[ext_resource type="Script" uid="uid://cj22vg4dn44qk" path="res://scene/ground/script/c03/s09_closeup棺材特写.gd" id="1_6v1ol"]
[ext_resource type="Texture2D" uid="uid://d03ja5ujdmyce" path="res://asset/art/scene/c03/s09_棺材房/棺材互动/棺材特写.png" id="2_6xi18"]
@ -6,13 +6,16 @@
[ext_resource type="Texture2D" uid="uid://cbql1i4hblmt1" path="res://asset/art/ui/遮罩/inspect特写通用遮罩.png" id="2_f6kiq"]
[ext_resource type="PackedScene" uid="uid://dmysq4sxx8iqh" path="res://scene/entity/ux/content_inspector.tscn" id="3_6xi18"]
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="3_mobd5"]
[ext_resource type="AudioStream" uid="uid://has5y3j2yyp7" path="res://asset/audio/sfx/UI/纸条包裹钥匙.ogg" id="4_7k28m"]
[ext_resource type="Texture2D" uid="uid://bihf4gpj0r1jj" path="res://asset/art/scene/c03/s09_棺材房/棺材互动/棺材纸条.png" id="4_bgvp8"]
[ext_resource type="Texture2D" uid="uid://f186lvt5y2ql" path="res://asset/art/ui/遮罩/inspect背景遮罩.png" id="5_mobd5"]
[ext_resource type="Texture2D" uid="uid://ush0d2g8uj08" path="res://asset/art/scene/c03/s09_棺材房/棺材互动/带血的纸条.png" id="6_ok7al"]
[ext_resource type="Script" uid="uid://dpocj5al0rvai" path="res://ui/text_helper.gd" id="6_t53mt"]
[ext_resource type="PackedScene" uid="uid://bkk1rxx36ghrl" path="res://scene/entity/ux/hover_light_click_area.tscn" id="10_t53mt"]
[ext_resource type="Texture2D" uid="uid://bkn0cytl435yw" path="res://asset/art/scene/c03/s09_棺材房/棺材互动/刀.png" id="11_ok7al"]
[ext_resource type="Texture2D" uid="uid://cd76oamv0msug" path="res://asset/art/scene/c03/s09_棺材房/棺材互动/胶水.png" id="13_i378g"]
[ext_resource type="Texture2D" uid="uid://dhdo8nxthe0et" path="res://asset/art/scene/c03/s09_棺材房/棺材互动/刀把.png" id="13_ld65o"]
[ext_resource type="Script" uid="uid://0wjaho6qkg6s" path="res://manager/event_manager/event_binder.gd" id="16_6hali"]
[node name="Closeup棺材特写" type="CanvasLayer"]
script = ExtResource("1_6v1ol")
@ -23,13 +26,18 @@ stream = ExtResource("2_bgvp8")
bus = &"game_sfx"
script = ExtResource("3_mobd5")
[node name="Sfx使用浆糊" type="AudioStreamPlayer" parent="."]
stream = ExtResource("4_7k28m")
bus = &"game_sfx"
script = ExtResource("3_mobd5")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="BG" type="TextureRect" parent="."]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 0
texture = ExtResource("2_6xi18")
[node name="遮罩" type="TextureRect" parent="."]
@ -38,9 +46,71 @@ anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
texture = ExtResource("2_f6kiq")
[node name="Hover纸条" parent="." instance=ExtResource("10_t53mt")]
unique_name_in_owner = true
position = Vector2(250, 139)
freezing = true
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hover纸条"]
polygon = PackedVector2Array(-7.3, -26.5, -26.5, -26.5, -26.5, -25.1, -39.5, -0.799999, -39.5, 13.5, -24.3, 13.5, -23.5, 14.3, -23.5, 16.1, -16.7, 17.5, -12.1, 17.5, 10.1, 26.5, 30.5, 26.5, 34.5, 11.8, 34.5, 9.1, 39.5, 0, 39.5, -10.6, 37.5, -11.1, 37.5, -12)
[node name="Sprite2D" type="Sprite2D" parent="Hover纸条"]
light_mask = 4
texture = ExtResource("6_ok7al")
[node name="PointLight2D" type="PointLight2D" parent="Hover纸条"]
energy = 3.0
range_layer_max = 10
range_item_cull_mask = 4
texture = ExtResource("6_ok7al")
[node name="EventBinder" type="Node" parent="Hover纸条"]
script = ExtResource("16_6hali")
updater_event = &"c03_coffin"
updater_mode = "unfreezer"
metadata/_custom_type_script = "uid://0wjaho6qkg6s"
[node name="Hover刀" parent="." instance=ExtResource("10_t53mt")]
unique_name_in_owner = true
position = Vector2(286, 112)
freezing = true
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hover刀"]
polygon = PackedVector2Array(52.5, -32, 34.8, -32, -57.2, 12, -59.5, 12, -59.5, 24.2, -57.5, 25, -57.5, 26.6, -19.7, 32, 4, 32, 33.8, 22, 37.5, 22, 43.5, 17.5, 43.5, 13.5, 21, -4.4, 52.3, -24, 54.4, -24, 56, -27.3)
[node name="刀无柄" type="Sprite2D" parent="Hover刀"]
light_mask = 4
texture = ExtResource("11_ok7al")
[node name="胶水" type="Sprite2D" parent="Hover刀"]
unique_name_in_owner = true
visible = false
light_mask = 4
position = Vector2(33, -18)
texture = ExtResource("13_i378g")
[node name="刀有柄" type="Sprite2D" parent="Hover刀"]
unique_name_in_owner = true
visible = false
light_mask = 4
position = Vector2(32, -23)
texture = ExtResource("13_ld65o")
[node name="PointLight2D" type="PointLight2D" parent="Hover刀"]
energy = 3.0
range_layer_max = 10
range_item_cull_mask = 4
texture = ExtResource("11_ok7al")
[node name="EventBinder" type="Node" parent="Hover刀"]
script = ExtResource("16_6hali")
updater_event = &"c03_coffin"
updater_mode = "shower"
updater_stages = Array[int]([0])
metadata/_custom_type_script = "uid://0wjaho6qkg6s"
[node name="沾血的纸条" type="TextureRect" parent="."]
unique_name_in_owner = true
visible = false
@ -49,7 +119,6 @@ anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 0
texture = ExtResource("4_bgvp8")
[node name="ContentInspector" parent="沾血的纸条" instance=ExtResource("3_6xi18")]
@ -84,42 +153,3 @@ vertical_alignment = 1
autowrap_mode = 3
script = ExtResource("6_t53mt")
translation_key = "prop_沾血的纸条_说明"
[node name="Hover纸条" parent="." instance=ExtResource("10_t53mt")]
position = Vector2(250, 139)
freezing = true
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hover纸条"]
polygon = PackedVector2Array(-7.3, -26.5, -26.5, -26.5, -26.5, -25.1, -39.5, -0.799999, -39.5, 13.5, -24.3, 13.5, -23.5, 14.3, -23.5, 16.1, -16.7, 17.5, -12.1, 17.5, 10.1, 26.5, 30.5, 26.5, 34.5, 11.8, 34.5, 9.1, 39.5, 0, 39.5, -10.6, 37.5, -11.1, 37.5, -12)
[node name="Sprite2D" type="Sprite2D" parent="Hover纸条"]
light_mask = 4
texture = ExtResource("6_ok7al")
[node name="PointLight2D" type="PointLight2D" parent="Hover纸条"]
energy = 3.0
range_layer_max = 10
range_item_cull_mask = 4
texture = ExtResource("6_ok7al")
[node name="Hover刀" parent="." instance=ExtResource("10_t53mt")]
position = Vector2(286, 112)
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hover刀"]
visible = false
polygon = PackedVector2Array(52.5, -32, 34.8, -32, -57.2, 12, -59.5, 12, -59.5, 24.2, -57.5, 25, -57.5, 26.6, -19.7, 32, 4, 32, 33.8, 22, 37.5, 22, 43.5, 17.5, 43.5, 13.5, 21, -4.4, 52.3, -24, 54.4, -24, 56, -27.3)
[node name="刀无柄" type="Sprite2D" parent="Hover刀"]
light_mask = 4
texture = ExtResource("11_ok7al")
[node name="刀有柄" type="Sprite2D" parent="Hover刀"]
light_mask = 4
position = Vector2(32, -23)
texture = ExtResource("13_ld65o")
[node name="PointLight2D" type="PointLight2D" parent="Hover刀"]
energy = 3.0
range_layer_max = 10
range_item_cull_mask = 4
texture = ExtResource("11_ok7al")