From ca62f104e80908565590710ebc9fedc4db50a127 Mon Sep 17 00:00:00 2001 From: freewu32 <2217332562@qq.com> Date: Tue, 8 Sep 2020 11:16:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E5=AE=9E=E7=8E=B0=E6=A5=BC?= =?UTF-8?q?=E5=B1=82=E9=A3=9E=E8=A1=8C=E5=99=A8=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Main.gd | 8 +- Main.tscn | 146 +++++++++++++++++++++++++++++-- assets/images/winskin.png | Bin 0 -> 6242 bytes assets/images/winskin.png.import | 34 +++++++ src/hud/FlyDialog.gd | 20 +++++ src/hud/HUD.gd | 6 ++ src/level/LevelsManager.gd | 19 +++- src/levels/Level1.tscn | 18 ++-- src/levels/Level7.tscn | 12 +++ src/levels/Level8.tscn | 3 - src/levels/Level9.tscn | 15 +--- src/props/FlyingStaff.tscn | 22 +++++ src/props/PlayerPropsAppend.gd | 10 +++ 13 files changed, 278 insertions(+), 35 deletions(-) create mode 100644 assets/images/winskin.png create mode 100644 assets/images/winskin.png.import create mode 100644 src/hud/FlyDialog.gd create mode 100644 src/props/FlyingStaff.tscn create mode 100644 src/props/PlayerPropsAppend.gd diff --git a/Main.gd b/Main.gd index ad62c05..7c3f0a3 100644 --- a/Main.gd +++ b/Main.gd @@ -23,6 +23,7 @@ func connect_button(): $"/root/Main/HUD/BottomBackground/VBoxContainer/SaveButton".connect("pressed",self,"on_save_button_clicked") $"/root/Main/HUD/BottomBackground/VBoxContainer/LoadButton".connect("pressed",self,"on_load_button_clicked") $"/root/Main/HUD/BottomBackground/VBoxContainer/BookButton".connect("pressed",self,"on_book_button_clicked") + $"/root/Main/HUD/BottomBackground/VBoxContainer/FlyButton".connect("pressed",self,"on_fly_button_clicked") get_hud().get_close_book_button_view().connect("pressed",self,"on_close_book_clicked") func connect_level_update(): @@ -61,7 +62,9 @@ func on_prop_added(name): match name: "book": get_hud().get_book_button_view().visible = true - + "flying_staff": + get_hud().get_fly_button_view().visible = true + func on_save_button_clicked(): get_level_manager().save_persistent(0) @@ -74,6 +77,9 @@ func on_book_button_clicked(): func on_close_book_clicked(): get_hud().get_book_dialog_view().visible = false +func on_fly_button_clicked(): + get_hud().get_fly_dialog_view().show() + func get_hud() -> Hud: return $HUD as Hud diff --git a/Main.tscn b/Main.tscn index 215b0a9..b760f1f 100644 --- a/Main.tscn +++ b/Main.tscn @@ -1,11 +1,14 @@ -[gd_scene load_steps=29 format=2] +[gd_scene load_steps=41 format=2] [ext_resource path="res://src/levels/Level1.tscn" type="PackedScene" id=1] [ext_resource path="res://src/utils/TouchScrollContainer.gd" type="Script" id=2] +[ext_resource path="res://assets/fonts/Droid Sans Fallback.ttf" type="DynamicFontData" id=3] +[ext_resource path="res://assets/images/winskin.png" type="Texture" id=4] [ext_resource path="res://assets/sounds/bgm.ogg" type="AudioStream" id=5] [ext_resource path="res://assets/images/ground.png" type="Texture" id=6] [ext_resource path="res://assets/images/icons_old.png" type="Texture" id=7] [ext_resource path="res://assets/fonts/Droid Sans Fallback.tres" type="DynamicFont" id=8] +[ext_resource path="res://src/hud/FlyDialog.gd" type="Script" id=9] [ext_resource path="res://src/level/LevelsManager.gd" type="Script" id=10] [ext_resource path="res://src/hud/HUD.gd" type="Script" id=11] [ext_resource path="res://Main.gd" type="Script" id=12] @@ -75,6 +78,31 @@ region = Rect2( 0, 544, 32, 32 ) [sub_resource type="StyleBoxEmpty" id=19] +[sub_resource type="DynamicFont" id=20] +size = 32 +font_data = ExtResource( 3 ) + +[sub_resource type="StreamTexture" id=21] +load_path = "res://.import/winskin.png-148a2ef6406d211f02ea143438de6aef.stex" + +[sub_resource type="AtlasTexture" id=22] +atlas = SubResource( 21 ) +region = Rect2( 152, 16, 16, 8 ) + +[sub_resource type="AtlasTexture" id=23] +atlas = ExtResource( 4 ) +region = Rect2( 152, 40, 16, 8 ) + +[sub_resource type="StyleBoxEmpty" id=24] + +[sub_resource type="StyleBoxEmpty" id=25] + +[sub_resource type="StyleBoxEmpty" id=26] + +[sub_resource type="StyleBoxEmpty" id=27] + +[sub_resource type="StyleBoxEmpty" id=28] + [node name="Main" type="Node2D"] script = ExtResource( 12 ) @@ -311,30 +339,30 @@ margin_bottom = 32.0 size_flags_horizontal = 3 texture_normal = SubResource( 7 ) -[node name="TextureButton2" type="TextureButton" parent="HUD/BottomBackground/VBoxContainer"] +[node name="FlyButton" type="TextureButton" parent="HUD/BottomBackground/VBoxContainer"] visible = false -margin_right = 40.0 +margin_right = 36.0 margin_bottom = 32.0 size_flags_horizontal = 3 texture_normal = SubResource( 8 ) [node name="TextureButton3" type="TextureButton" parent="HUD/BottomBackground/VBoxContainer"] visible = false -margin_right = 40.0 +margin_right = 36.0 margin_bottom = 32.0 size_flags_horizontal = 3 texture_normal = SubResource( 9 ) [node name="TextureButton4" type="TextureButton" parent="HUD/BottomBackground/VBoxContainer"] visible = false -margin_right = 40.0 +margin_right = 36.0 margin_bottom = 32.0 size_flags_horizontal = 3 texture_normal = SubResource( 10 ) [node name="TextureButton5" type="TextureButton" parent="HUD/BottomBackground/VBoxContainer"] visible = false -margin_right = 40.0 +margin_right = 36.0 margin_bottom = 32.0 size_flags_horizontal = 3 texture_normal = SubResource( 11 ) @@ -381,7 +409,6 @@ margin_right = 414.0 margin_bottom = 224.0 popup_exclusive = true __meta__ = { -"_edit_group_": true, "_edit_use_anchors_": false } @@ -472,6 +499,110 @@ __meta__ = { "_edit_use_anchors_": false } +[node name="FlyDialog" type="PopupDialog" parent="HUD"] +visible = true +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -176.0 +margin_top = -144.0 +margin_right = 176.0 +margin_bottom = 240.0 +script = ExtResource( 9 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Title" type="Label" parent="HUD/FlyDialog"] +anchor_left = 0.5 +anchor_right = 0.5 +margin_left = -64.0 +margin_top = 43.0 +margin_right = 64.0 +margin_bottom = 86.0 +custom_fonts/font = SubResource( 20 ) +text = "楼层跳跃" + +[node name="Screenshot" type="TextureRect" parent="HUD/FlyDialog"] +anchor_top = 0.5 +anchor_bottom = 0.5 +margin_left = 32.0 +margin_top = -88.0 +margin_right = 225.0 +margin_bottom = 128.0 +expand = true +stretch_mode = 6 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="CurrentLevel" type="Label" parent="HUD/FlyDialog"] +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +margin_left = -128.0 +margin_top = -12.0 +margin_right = -8.0 +margin_bottom = 13.0 +custom_fonts/font = ExtResource( 8 ) +text = "魔塔 第01F" +align = 1 +valign = 1 +clip_text = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="AddLevel" type="TextureButton" parent="HUD/FlyDialog"] +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +margin_left = -72.0 +margin_top = -40.0 +margin_right = -56.0 +margin_bottom = -32.0 +texture_normal = SubResource( 22 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="SubLevel" type="TextureButton" parent="HUD/FlyDialog"] +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +margin_left = -72.0 +margin_top = 33.0 +margin_right = -56.0 +margin_bottom = 41.0 +texture_normal = SubResource( 23 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Close" type="Button" parent="HUD/FlyDialog"] +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +margin_left = -32.0 +margin_top = -45.0 +margin_right = 32.0 +margin_bottom = -8.0 +custom_styles/hover = SubResource( 24 ) +custom_styles/pressed = SubResource( 25 ) +custom_styles/focus = SubResource( 26 ) +custom_styles/disabled = SubResource( 27 ) +custom_styles/normal = SubResource( 28 ) +custom_fonts/font = ExtResource( 8 ) +text = "返回游戏" +__meta__ = { +"_edit_use_anchors_": false +} + [node name="Level" type="Node2D" parent="."] script = ExtResource( 10 ) @@ -481,3 +612,4 @@ script = ExtResource( 10 ) stream = ExtResource( 5 ) volume_db = -10.0 [connection signal="popup_hide" from="HUD/BookDialog" to="HUD/BookDialog/ScrollContainer" method="_on_BookDialog_popup_hide"] +[connection signal="pressed" from="HUD/FlyDialog/Close" to="HUD/FlyDialog" method="_on_Close_pressed"] diff --git a/assets/images/winskin.png b/assets/images/winskin.png new file mode 100644 index 0000000000000000000000000000000000000000..f3144531b9b8ae8f65fbe4c147df617005b4d1f3 GIT binary patch literal 6242 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 Qe&YZGox8WHv>cxPAH(q*dH?_b literal 0 HcmV?d00001 diff --git a/assets/images/winskin.png.import b/assets/images/winskin.png.import new file mode 100644 index 0000000..8861640 --- /dev/null +++ b/assets/images/winskin.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/winskin.png-148a2ef6406d211f02ea143438de6aef.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/images/winskin.png" +dest_files=[ "res://.import/winskin.png-148a2ef6406d211f02ea143438de6aef.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/src/hud/FlyDialog.gd b/src/hud/FlyDialog.gd new file mode 100644 index 0000000..c811b5a --- /dev/null +++ b/src/hud/FlyDialog.gd @@ -0,0 +1,20 @@ +extends PopupDialog + +onready var level_manager : LevelsManager = $"/root/Main/Level" + +onready var level_label : Label = $"CurrentLevel" + +onready var level_screenshot : TextureRect = $"Screenshot" + +func show(): + var current_level = level_manager.level + level_label.text = "魔塔 第%0*dF" % [2,current_level] + var image = get_viewport().get_texture().get_data() + image.flip_y() + var texture = ImageTexture.new() + texture.create_from_image(image,image.get_format()) + level_screenshot.texture = texture + visible = true + +func _on_Close_pressed(): + visible = false diff --git a/src/hud/HUD.gd b/src/hud/HUD.gd index 12f85e1..d975213 100644 --- a/src/hud/HUD.gd +++ b/src/hud/HUD.gd @@ -35,8 +35,14 @@ func get_load_button_view() -> TextureButton: func get_book_button_view() -> TextureButton: return $"BottomBackground/VBoxContainer/BookButton" as TextureButton +func get_fly_button_view() -> TextureButton: + return $"BottomBackground/VBoxContainer/FlyButton" as TextureButton + func get_book_dialog_view() -> PopupDialog: return $"BookDialog" as PopupDialog func get_close_book_button_view() -> Button: return $"BookDialog/CloseBook" as Button + +func get_fly_dialog_view() -> PopupDialog: + return $"FlyDialog" as PopupDialog diff --git a/src/level/LevelsManager.gd b/src/level/LevelsManager.gd index 9e9eb1a..8c44d93 100644 --- a/src/level/LevelsManager.gd +++ b/src/level/LevelsManager.gd @@ -31,6 +31,23 @@ func set_level(next_level:int): save_instance_to_local() save_data_to_local() load_data(next_level) + save_go_to_level(next_level) + +# 保存去过的楼层 +func save_go_to_level(level:int): + if not self.global.has("player_levels"): + self.global.player_levels = {1:-1} + self.global.player_levels[level] = -1 + +# 获取去过的楼层 +func get_go_to_levels() -> Array: + if not self.global.has("player_levels"): + return [1] + return self.global.player_levels.keys() + +# 获取屏幕截图路径 +func get_screenshot_image_path(now_level:int) -> String: + return "%s%s.png" % [tmp_level_scene_path,now_level] func load_data(next_level:int): #加载数据 @@ -46,7 +63,7 @@ func load_data(next_level:int): func save_screenshot(): var image = get_viewport().get_texture().get_data() image.flip_y() - var save_error = image.save_png("%s%s.png" % [tmp_level_scene_path,level]) + var save_error = image.save_png(get_screenshot_image_path(self.level)) if save_error != OK: print("保存截图失败:"+save_error) diff --git a/src/levels/Level1.tscn b/src/levels/Level1.tscn index 0cd2620..d6dba8f 100644 --- a/src/levels/Level1.tscn +++ b/src/levels/Level1.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=13 format=2] +[gd_scene load_steps=14 format=2] [ext_resource path="res://src/player/Player.tscn" type="PackedScene" id=1] [ext_resource path="res://src/level/LevelInstance.gd" type="Script" id=2] @@ -12,6 +12,7 @@ [ext_resource path="res://src/props/RedDrug.tscn" type="PackedScene" id=10] [ext_resource path="res://src/props/BlueGemstone.tscn" type="PackedScene" id=11] [ext_resource path="res://src/props/BlueDrug.tscn" type="PackedScene" id=12] +[ext_resource path="res://src/props/FlyingStaff.tscn" type="PackedScene" id=13] [node name="Level1" type="Node2D"] script = ExtResource( 2 ) @@ -88,50 +89,47 @@ position = Vector2( 114.1, 432 ) [node name="Monster" parent="Items" instance=ExtResource( 6 )] position = Vector2( 112, 144 ) +frame = 0 [node name="Monster2" parent="Items" instance=ExtResource( 6 )] position = Vector2( 144, 144 ) animation = "redSlime" -frame = 0 [node name="Monster4" parent="Items" instance=ExtResource( 6 )] position = Vector2( 336, 432 ) animation = "bat" -frame = 0 [node name="Monster9" parent="Items" instance=ExtResource( 6 )] position = Vector2( 240, 304 ) animation = "bat" -frame = 0 [node name="Monster10" parent="Items" instance=ExtResource( 6 )] position = Vector2( 272, 304 ) animation = "bluePriest" -frame = 0 [node name="Monster11" parent="Items" instance=ExtResource( 6 )] position = Vector2( 304, 304 ) animation = "bat" -frame = 0 [node name="Monster7" parent="Items" instance=ExtResource( 6 )] position = Vector2( 80, 240 ) animation = "skeleton" -frame = 0 [node name="Monster8" parent="Items" instance=ExtResource( 6 )] position = Vector2( 80, 336 ) animation = "skeletonSoilder" -frame = 0 [node name="Monster5" parent="Items" instance=ExtResource( 6 )] position = Vector2( 304, 464 ) +frame = 0 [node name="Monster6" parent="Items" instance=ExtResource( 6 )] position = Vector2( 368, 464 ) +frame = 0 [node name="Monster3" parent="Items" instance=ExtResource( 6 )] position = Vector2( 176, 144 ) +frame = 0 [node name="Stairs" parent="Items" instance=ExtResource( 3 )] position = Vector2( 48, 144 ) @@ -139,7 +137,9 @@ position = Vector2( 48, 144 ) [node name="BlueGemstone" parent="Items" instance=ExtResource( 11 )] position = Vector2( 240, 208 ) +[node name="FlyingStaff" parent="Items" instance=ExtResource( 13 )] + [node name="Player" parent="." instance=ExtResource( 1 )] -position = Vector2( 207, 464 ) +position = Vector2( 80, 400 ) atk = 100 def = 100 diff --git a/src/levels/Level7.tscn b/src/levels/Level7.tscn index a317998..4c43e6c 100644 --- a/src/levels/Level7.tscn +++ b/src/levels/Level7.tscn @@ -69,18 +69,22 @@ position = Vector2( 176, 272 ) [node name="MonsterSprite" parent="Items" instance=ExtResource( 9 )] position = Vector2( 304, 272 ) animation = "skeleton" +frame = 0 [node name="MonsterSprite3" parent="Items" instance=ExtResource( 9 )] position = Vector2( 176, 208 ) animation = "redSlime" +frame = 0 [node name="MonsterSprite10" parent="Items" instance=ExtResource( 9 )] position = Vector2( 80, 464 ) animation = "redSlime" +frame = 0 [node name="MonsterSprite15" parent="Items" instance=ExtResource( 9 )] position = Vector2( 368, 176 ) animation = "redSlime" +frame = 0 [node name="MonsterSprite11" parent="Items" instance=ExtResource( 9 )] position = Vector2( 112, 432 ) @@ -97,34 +101,42 @@ position = Vector2( 48, 432 ) [node name="MonsterSprite5" parent="Items" instance=ExtResource( 9 )] position = Vector2( 176, 400 ) animation = "bat" +frame = 0 [node name="MonsterSprite13" parent="Items" instance=ExtResource( 9 )] position = Vector2( 112, 208 ) animation = "bat" +frame = 0 [node name="MonsterSprite6" parent="Items" instance=ExtResource( 9 )] position = Vector2( 240, 400 ) animation = "redSlime" +frame = 0 [node name="MonsterSprite7" parent="Items" instance=ExtResource( 9 )] position = Vector2( 240, 432 ) animation = "bluePriest" +frame = 0 [node name="MonsterSprite8" parent="Items" instance=ExtResource( 9 )] position = Vector2( 144, 304 ) animation = "bluePriest" +frame = 0 [node name="MonsterSprite2" parent="Items" instance=ExtResource( 9 )] position = Vector2( 304, 336 ) animation = "skeletonSoilder" +frame = 0 [node name="MonsterSprite9" parent="Items" instance=ExtResource( 9 )] position = Vector2( 80, 304 ) animation = "skeletonSoilder" +frame = 0 [node name="MonsterSprite4" parent="Items" instance=ExtResource( 9 )] position = Vector2( 240, 208 ) animation = "skeletonSoilder" +frame = 0 [node name="YellowKey" parent="Items" instance=ExtResource( 10 )] position = Vector2( 176, 464 ) diff --git a/src/levels/Level8.tscn b/src/levels/Level8.tscn index 381c98c..4ec4b48 100644 --- a/src/levels/Level8.tscn +++ b/src/levels/Level8.tscn @@ -125,7 +125,6 @@ position = Vector2( 368, 208 ) [node name="MonsterSprite" parent="Items" instance=ExtResource( 16 )] position = Vector2( 240, 176 ) -frame = 0 [node name="MonsterSprite2" parent="Items" instance=ExtResource( 16 )] position = Vector2( 304, 272 ) @@ -161,11 +160,9 @@ animation = "redSlime" [node name="MonsterSprite9" parent="Items" instance=ExtResource( 16 )] position = Vector2( 112, 304 ) -frame = 0 [node name="MonsterSprite11" parent="Items" instance=ExtResource( 16 )] position = Vector2( 48, 432 ) -frame = 0 [node name="MonsterSprite6" parent="Items" instance=ExtResource( 16 )] position = Vector2( 208, 368 ) diff --git a/src/levels/Level9.tscn b/src/levels/Level9.tscn index 4835699..a984c99 100644 --- a/src/levels/Level9.tscn +++ b/src/levels/Level9.tscn @@ -73,6 +73,7 @@ position = Vector2( 208, 208 ) [node name="HiddenDoor" parent="Items" instance=ExtResource( 8 )] position = Vector2( 336, 272 ) +enabled = true [node name="BlueDoor2" parent="Items" instance=ExtResource( 6 )] position = Vector2( 112, 464 ) @@ -119,32 +120,26 @@ position = Vector2( 48, 336 ) [node name="MonsterSprite" parent="Items" instance=ExtResource( 13 )] position = Vector2( 112, 144 ) animation = "skeleton" -frame = 1 [node name="MonsterSprite8" parent="Items" instance=ExtResource( 13 )] position = Vector2( 336, 432 ) animation = "skeleton" -frame = 1 [node name="MonsterSprite9" parent="Items" instance=ExtResource( 13 )] position = Vector2( 176, 432 ) animation = "skeleton" -frame = 1 [node name="MonsterSprite10" parent="Items" instance=ExtResource( 13 )] position = Vector2( 144, 336 ) animation = "skeletonSoilder" -frame = 1 [node name="MonsterSprite12" parent="Items" instance=ExtResource( 13 )] position = Vector2( 240, 304 ) animation = "redSlime" -frame = 1 [node name="MonsterSprite13" parent="Items" instance=ExtResource( 13 )] position = Vector2( 240, 432 ) animation = "bat" -frame = 1 [node name="IronShield" parent="Items" instance=ExtResource( 14 )] position = Vector2( 304, 336 ) @@ -152,40 +147,32 @@ position = Vector2( 304, 336 ) [node name="MonsterSprite14" parent="Items" instance=ExtResource( 13 )] position = Vector2( 112, 272 ) animation = "bat" -frame = 1 [node name="MonsterSprite11" parent="Items" instance=ExtResource( 13 )] position = Vector2( 48, 368 ) animation = "skeletonSoilder" -frame = 1 [node name="MonsterSprite3" parent="Items" instance=ExtResource( 13 )] position = Vector2( 304, 144 ) -frame = 1 [node name="MonsterSprite4" parent="Items" instance=ExtResource( 13 )] position = Vector2( 336, 176 ) -frame = 1 [node name="MonsterSprite2" parent="Items" instance=ExtResource( 13 )] position = Vector2( 48, 208 ) animation = "skeletonSoilder" -frame = 1 [node name="MonsterSprite5" parent="Items" instance=ExtResource( 13 )] position = Vector2( 368, 304 ) animation = "skeletonSoilder" -frame = 1 [node name="MonsterSprite6" parent="Items" instance=ExtResource( 13 )] position = Vector2( 368, 400 ) animation = "bluePriest" -frame = 1 [node name="MonsterSprite7" parent="Items" instance=ExtResource( 13 )] position = Vector2( 304, 464 ) animation = "bluePriest" -frame = 1 [node name="Player" parent="." instance=ExtResource( 15 )] position = Vector2( 208, 176 ) diff --git a/src/props/FlyingStaff.tscn b/src/props/FlyingStaff.tscn new file mode 100644 index 0000000..44ffc88 --- /dev/null +++ b/src/props/FlyingStaff.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://src/props/PlayerPropsAppend.gd" type="Script" id=1] +[ext_resource path="res://assets/images/items.png" type="Texture" id=2] + +[sub_resource type="RectangleShape2D" id=1] + +[node name="FlyingStaff" type="Position2D"] +position = Vector2( 80, 464 ) +script = ExtResource( 1 ) +prop_name = "flying_staff" + +[node name="Area2D" type="Area2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +shape = SubResource( 1 ) + +[node name="Sprite" type="Sprite" parent="."] +texture = ExtResource( 2 ) +region_enabled = true +region_rect = Rect2( 0, 320, 32, 32 ) +[connection signal="body_entered" from="Area2D" to="." method="_on_Area2D_body_entered"] diff --git a/src/props/PlayerPropsAppend.gd b/src/props/PlayerPropsAppend.gd new file mode 100644 index 0000000..f8b3d9e --- /dev/null +++ b/src/props/PlayerPropsAppend.gd @@ -0,0 +1,10 @@ +extends Position2D + +# 道具名称 +export var prop_name : String + +func _on_Area2D_body_entered(body): + var levels_manager = $"/root/Main/Level" as LevelsManager + var player = levels_manager.get_current_level_instance().get_player() + player.add_prop(prop_name) + queue_free()