Initial commit: Godot 4.7 pixel platformer prototype

Player: move/jump (Space), test flight (F, debug builds only). Key: pickup, hold S to aim with live trajectory preview, release to throw, W to warp to the thrown key. Spring bounce. Spikes deal damage. 3-heart health, Z consumes a heal item for +1 heart and a 5s shield. HUD with hearts and item count. Death screen with fade-to-black and restart. Hidden passages. Assets: Kenney Pixel Platformer (CC0).
This commit is contained in:
2026-10-07 20:32:42 +08:00
commit 9dffacd938
558 changed files with 12258 additions and 0 deletions
+48
View File
@@ -0,0 +1,48 @@
[gd_scene load_steps=4 format=3]
[ext_resource type="Script" path="res://scripts/death_screen.gd" id="1_death"]
[sub_resource type="SystemFont" id="SystemFont_cjk"]
font_names = PackedStringArray("Microsoft YaHei UI", "Microsoft YaHei", "SimHei", "Noto Sans CJK SC", "sans-serif")
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_button"]
bg_color = Color(0.75, 0.2, 0.2, 1)
corner_radius_top_left = 3
corner_radius_top_right = 3
corner_radius_bottom_right = 3
corner_radius_bottom_left = 3
content_margin_left = 18.0
content_margin_top = 6.0
content_margin_right = 18.0
content_margin_bottom = 6.0
[node name="DeathScreen" type="CanvasLayer"]
layer = 10
script = ExtResource("1_death")
[node name="Fade" type="ColorRect" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
mouse_filter = 2
color = Color(0, 0, 0, 0)
[node name="Center" type="CenterContainer" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
mouse_filter = 2
[node name="VBox" type="VBoxContainer" parent="Center"]
theme_override_constants/separation = 14
[node name="Title" type="Label" parent="Center/VBox"]
theme_override_colors/font_color = Color(1, 0.36, 0.36, 1)
theme_override_fonts/font = SubResource("SystemFont_cjk")
theme_override_font_sizes/font_size = 24
text = "你死了"
horizontal_alignment = 1
[node name="RestartButton" type="Button" parent="Center/VBox"]
theme_override_fonts/font = SubResource("SystemFont_cjk")
theme_override_font_sizes/font_size = 14
theme_override_styles/normal = SubResource("StyleBoxFlat_button")
text = "重新开始 (R)"
+64
View File
@@ -0,0 +1,64 @@
[gd_scene load_steps=6 format=3]
[ext_resource type="Texture2D" path="res://assets/game/tilesets/kenney_tiles_atlas.png" id="1_atlas"]
[ext_resource type="Texture2D" path="res://assets/game/collectibles/coin_gold_round.png" id="2_coin"]
[ext_resource type="Script" path="res://scripts/hud.gd" id="3_hud"]
[sub_resource type="AtlasTexture" id="AtlasTexture_heart_full"]
atlas = ExtResource("1_atlas")
region = Rect2(72, 36, 18, 18)
[sub_resource type="AtlasTexture" id="AtlasTexture_heart_empty"]
atlas = ExtResource("1_atlas")
region = Rect2(108, 36, 18, 18)
[node name="HUD" type="CanvasLayer"]
script = ExtResource("3_hud")
full_heart_texture = SubResource("AtlasTexture_heart_full")
empty_heart_texture = SubResource("AtlasTexture_heart_empty")
[node name="Heart1" type="TextureRect" parent="."]
offset_left = 8.0
offset_top = 6.0
offset_right = 26.0
offset_bottom = 24.0
texture = SubResource("AtlasTexture_heart_full")
[node name="Heart2" type="TextureRect" parent="."]
offset_left = 28.0
offset_top = 6.0
offset_right = 46.0
offset_bottom = 24.0
texture = SubResource("AtlasTexture_heart_full")
[node name="Heart3" type="TextureRect" parent="."]
offset_left = 48.0
offset_top = 6.0
offset_right = 66.0
offset_bottom = 24.0
texture = SubResource("AtlasTexture_heart_full")
[node name="CoinIcon" type="TextureRect" parent="."]
offset_left = 9.0
offset_top = 27.0
offset_right = 27.0
offset_bottom = 45.0
texture = ExtResource("2_coin")
[node name="CountLabel" type="Label" parent="."]
offset_left = 30.0
offset_top = 26.0
offset_right = 110.0
offset_bottom = 46.0
theme_override_colors/font_color = Color(1, 1, 1, 1)
theme_override_font_sizes/font_size = 12
text = "x0"
[node name="ShieldLabel" type="Label" parent="."]
offset_left = 8.0
offset_top = 46.0
offset_right = 160.0
offset_bottom = 66.0
theme_override_colors/font_color = Color(0.55, 0.9, 1, 1)
theme_override_font_sizes/font_size = 12
text = ""
+218
View File
@@ -0,0 +1,218 @@
[gd_scene format=4 uid="uid://j7jt48be856p"]
[ext_resource type="Texture2D" uid="uid://djmk0srfgyafe" path="res://assets/game/backgrounds/cloud_left.png" id="1_myku1"]
[ext_resource type="Texture2D" uid="uid://dptqmtay4plwp" path="res://assets/game/backgrounds/cloud_trees.png" id="2_m18yi"]
[ext_resource type="Texture2D" uid="uid://dys7320ghojh6" path="res://assets/game/backgrounds/cloud_hills.png" id="3_c7dcd"]
[ext_resource type="Texture2D" uid="uid://1b8hp0rm864l" path="res://assets/game/backgrounds/cloud_right.png" id="4_edvbp"]
[ext_resource type="TileSet" uid="uid://dkowcf1ljh41j" path="res://assets/game/tilesets/kenney_terrain_tileset.tres" id="5_4etix"]
[ext_resource type="PackedScene" uid="uid://c1u8k6ny02t4y" path="res://scenes/player.tscn" id="9_bauo3"]
[ext_resource type="PackedScene" path="res://scenes/prefabs/hazards/spikes_double.tscn" id="15_ycytw"]
[ext_resource type="PackedScene" path="res://scenes/prefabs/interactables/spring_red.tscn" id="16_nih4k"]
[ext_resource type="PackedScene" path="res://scenes/prefabs/collectibles/coin_gold_round.tscn" id="17_rmlt8"]
[ext_resource type="PackedScene" path="res://scenes/prefabs/collectibles/key_gold.tscn" id="18_keygold"]
[ext_resource type="Script" uid="uid://dxwa7fxghp3a2" path="res://scripts/hidden_passages.gd" id="19_hidden"]
[ext_resource type="PackedScene" path="res://scenes/hud.tscn" id="21_hud"]
[ext_resource type="PackedScene" path="res://scenes/death_screen.tscn" id="22_death"]
[node name="Main" type="Node2D" unique_id=2061129075]
[node name="HUD" parent="." instance=ExtResource("21_hud")]
[node name="DeathScreen" parent="." instance=ExtResource("22_death")]
[node name="Level" type="Node2D" parent="." unique_id=1678372922]
[node name="Background" type="Node2D" parent="Level" unique_id=702011751]
[node name="SkyColor" type="Polygon2D" parent="Level/Background" unique_id=22763597]
z_index = -30
color = Color(0.8509804, 0.9411765, 0.9372549, 1)
polygon = PackedVector2Array(0, 0, 468, 0, 468, 130.0972, 468, 270, 0, 270)
[node name="CloudBand_01" type="Sprite2D" parent="Level/Background" unique_id=589633713]
z_index = -20
texture_filter = 1
position = Vector2(12, 150)
texture = ExtResource("1_myku1")
[node name="CloudBand_02" type="Sprite2D" parent="Level/Background" unique_id=225493882]
z_index = -20
texture_filter = 1
position = Vector2(36, 150)
texture = ExtResource("2_m18yi")
[node name="CloudBand_03" type="Sprite2D" parent="Level/Background" unique_id=646834403]
z_index = -20
texture_filter = 1
position = Vector2(60, 150)
texture = ExtResource("3_c7dcd")
[node name="CloudBand_04" type="Sprite2D" parent="Level/Background" unique_id=1012727532]
z_index = -20
texture_filter = 1
position = Vector2(84, 150)
texture = ExtResource("4_edvbp")
[node name="CloudBand_05" type="Sprite2D" parent="Level/Background" unique_id=1685434781]
z_index = -20
texture_filter = 1
position = Vector2(108, 150)
texture = ExtResource("1_myku1")
[node name="CloudBand_06" type="Sprite2D" parent="Level/Background" unique_id=1425986424]
z_index = -20
texture_filter = 1
position = Vector2(132, 150)
texture = ExtResource("2_m18yi")
[node name="CloudBand_07" type="Sprite2D" parent="Level/Background" unique_id=1333305041]
z_index = -20
texture_filter = 1
position = Vector2(156, 150)
texture = ExtResource("3_c7dcd")
[node name="CloudBand_08" type="Sprite2D" parent="Level/Background" unique_id=55356860]
z_index = -20
texture_filter = 1
position = Vector2(180, 150)
texture = ExtResource("4_edvbp")
[node name="CloudBand_09" type="Sprite2D" parent="Level/Background" unique_id=379152848]
z_index = -20
texture_filter = 1
position = Vector2(204, 150)
texture = ExtResource("1_myku1")
[node name="CloudBand_10" type="Sprite2D" parent="Level/Background" unique_id=325990577]
z_index = -20
texture_filter = 1
position = Vector2(228, 150)
texture = ExtResource("2_m18yi")
[node name="CloudBand_11" type="Sprite2D" parent="Level/Background" unique_id=1505438200]
z_index = -20
texture_filter = 1
position = Vector2(252, 150)
texture = ExtResource("3_c7dcd")
[node name="CloudBand_12" type="Sprite2D" parent="Level/Background" unique_id=190709163]
z_index = -20
texture_filter = 1
position = Vector2(276, 150)
texture = ExtResource("4_edvbp")
[node name="CloudBand_13" type="Sprite2D" parent="Level/Background" unique_id=349156114]
z_index = -20
texture_filter = 1
position = Vector2(300, 150)
texture = ExtResource("1_myku1")
[node name="CloudBand_14" type="Sprite2D" parent="Level/Background" unique_id=1838903106]
z_index = -20
texture_filter = 1
position = Vector2(324, 150)
texture = ExtResource("2_m18yi")
[node name="CloudBand_15" type="Sprite2D" parent="Level/Background" unique_id=169474301]
z_index = -20
texture_filter = 1
position = Vector2(348, 150)
texture = ExtResource("3_c7dcd")
[node name="CloudBand_16" type="Sprite2D" parent="Level/Background" unique_id=156763289]
z_index = -20
texture_filter = 1
position = Vector2(372, 150)
texture = ExtResource("4_edvbp")
[node name="CloudBand_17" type="Sprite2D" parent="Level/Background" unique_id=161240142]
z_index = -20
texture_filter = 1
position = Vector2(396, 150)
texture = ExtResource("1_myku1")
[node name="CloudBand_18" type="Sprite2D" parent="Level/Background" unique_id=1823235224]
z_index = -20
texture_filter = 1
position = Vector2(420, 150)
texture = ExtResource("2_m18yi")
[node name="CloudBand_19" type="Sprite2D" parent="Level/Background" unique_id=2092676382]
z_index = -20
texture_filter = 1
position = Vector2(444, 150)
texture = ExtResource("3_c7dcd")
[node name="CloudBand_20" type="Sprite2D" parent="Level/Background" unique_id=124375716]
z_index = -20
texture_filter = 1
position = Vector2(468, 150)
texture = ExtResource("4_edvbp")
[node name="TerrainTileMaps" type="Node2D" parent="Level" unique_id=652327492]
script = ExtResource("19_hidden")
[node name="TerrainBase" type="TileMapLayer" parent="Level/TerrainTileMaps" unique_id=91115499]
position = Vector2(9, 9)
tile_map_data = PackedByteArray("AAAAAAAAAAAEAAUAAAABAAAAAAACAAYAAAACAAAAAAAEAAUAAAADAAAAAAAEAAUAAAAEAAAAAAACAAYAAAAFAAAAAAACAAYAAAAGAAAAAAADAAYAAAAAAAEAAAACAAYAAAABAAEAAAAEAAUAAAACAAEAAAAEAAUAAAADAAEAAAACAAYAAAAEAAEAAAACAAYAAAAFAAEAAAAEAAUAAAAGAAEAAAADAAYAAAAMAAEAAAARAAAAAAANAAEAAAASAAAAAAAOAAEAAAATAAAAAAAAAAIAAAAEAAUAAAABAAIAAAACAAYAAAACAAIAAAAEAAUAAAADAAIAAAACAAYAAAAEAAIAAAAEAAUAAAAFAAIAAAAEAAAAAAAGAAIAAAADAAcAAAALAAIAAAARAAAAAAAMAAIAAAASAAEAAAANAAIAAAASAAEAAAAOAAIAAAATAAEAAAAAAAMAAAACAAYAAAABAAMAAAACAAYAAAACAAMAAAAEAAAAAAADAAMAAAACAAcAAAAEAAMAAAACAAcAAAAFAAMAAAADAAcAAAALAAMAAAARAAIAAAAMAAMAAAASAAEAAAANAAMAAAASAAEAAAAOAAMAAAATAAEAAAAVAAMAAAANAAcAAAAWAAMAAAAPAAcAAAAAAAQAAAACAAYAAAABAAQAAAAEAAUAAAACAAQAAAADAAYAAAAEAAQAAAAJAAMAAAAMAAQAAAARAAEAAAANAAQAAAASAAEAAAAOAAQAAAATAAEAAAABAAUAAAACAAcAAAACAAUAAAADAAcAAAAEAAUAAAAJAAQAAAAMAAUAAAARAAIAAAANAAUAAAARAAQAAAAOAAUAAAATAAIAAAAWAAUAAAALAAUAAAABAAYAAAAFAAYAADAEAAYAAAAJAAQAAAAIAAYAAAAJAAEAAAANAAYAAAAQAAQAAAAQAAYAAAANAAcAAAARAAYAAAAOAAcAAAASAAYAAAAPAAcAAAAUAAYAAAALAAIAAAAWAAYAAAALAAYAAAAXAAYAAAAFAAcAAAACAAcAAAAJAAYAAAAEAAcAAAAJAAUAAAAGAAcAAAAIAAQAAAANAAcAAAAQAAUAAAAUAAcAAAALAAMAAAAVAAcAAAABAAUAAAAWAAcAAAACAAUAAAAXAAcAAAADAAUAAAAYAAcAAAAGAAUAAAAZAAcAAAAGAAUAAAACAAgAAAABAAEAAAADAAgAAAACAAEAAAAEAAgAAAACAAEAAAAFAAgAAAACAAEAAAAGAAgAAAADAAEAAAAKAAgAAAAHAAEAAAAMAAgAAAASAAUAAAANAAgAAAARAAUAAAAOAAgAAAATAAQAABAPAAgAAAASAAQAABAUAAgAAAALAAMAAAAVAAgAAAABAAYAAAAWAAgAAAACAAYAAAAXAAgAAAAEAAEAAAAYAAgAAAACAAUAAAAZAAgAAAACAAUAAAAAAAkAAAACAAEAAAABAAkAAAACAAEAAAACAAkAAAAFAAEAAAADAAkAAAACAAYAAAAEAAkAAAACAAYAAAAFAAkAAAACAAYAAAAGAAkAAAADAAYAAAANAAkAAAAQAAUAAAASAAkAAAAGAAcAAAAUAAkAAAABAAUAAAAVAAkAAAAFAAEAAAAWAAkAAAAEAAUAAAAXAAkAAAACAAYAAAAYAAkAAAACAAYAAAAZAAkAAAACAAYAAAAAAAoAAAAEAAUAAAABAAoAAAACAAYAAAACAAoAAAACAAYAAAADAAoAAAACAAYAAAAEAAoAAAAEAAUAAAAFAAoAAAACAAYAAAAGAAoAAAAEAAEAAAAHAAoAAAADAAEAAAAIAAoAAAAGAAUAAAANAAoAAAARAAYAAAAPAAoAAAAHAAYAAAARAAoAAAAKAAUAAAATAAoAAAAEAAcAAAAUAAoAAAABAAYAAAAVAAoAAAACAAYAAAAWAAoAAAACAAYAAAAXAAoAAAACAAYAAAAYAAoAAAACAAYAAAAZAAoAAAACAAYAAAAAAAsAAAAEAAUAAAABAAsAAAACAAYAAAACAAsAAAAEAAUAAAADAAsAAAAEAAUAAAAEAAsAAAACAAYAAAAFAAsAAAAEAAUAAAAGAAsAAAACAAYAAAAHAAsAAAAEAAEAAAAIAAsAAAADAAEAAAAKAAsAAAAEAAYAAAAMAAsAAAABAAEAAAANAAsAAAACAAEAAAAOAAsAAAACAAMAAAAPAAsAAAADAAMAAAARAAsAAAAKAAYAAAATAAsAAAABAAUAAAAUAAsAAAAFAAEAAAAVAAsAAAACAAYAAAAWAAsAAAAEAAUAAAAXAAsAAAAEAAUAAAAYAAsAAAAEAAUAAAAZAAsAAAACAAYAAAAAAAwAAAACAAYAAAABAAwAAAACAAYAAAACAAwAAAACAAYAAAADAAwAAAAEAAUAAAAEAAwAAAACAAYAAAAFAAwAAAAEAAUAAAAGAAwAAAAEAAUAAAAHAAwAAAAEAAUAAAAIAAwAAAAEAAEAAAAJAAwAAAACAAEAAAAKAAwAAAACAAEAAAALAAwAAAACAAEAAAAMAAwAAAAFAAEAAAANAAwAAAAEAAUAAAAOAAwAAAAEAAUAAAAPAAwAAAAEAAEAAAAQAAwAAAACAAMAAAARAAwAAAACAAMAAAASAAwAAAACAAMAAAATAAwAAAAFAAEAAAAUAAwAAAACAAYAAAAVAAwAAAAEAAUAAAAWAAwAAAACAAYAAAAXAAwAAAAEAAUAAAAYAAwAAAAEAAUAAAAZAAwAAAACAAYAAAAAAA0AAAAEAAUAAAABAA0AAAACAAYAAAACAA0AAAAEAAUAAAADAA0AAAACAAYAAAAEAA0AAAACAAYAAAAFAA0AAAAEAAUAAAAGAA0AAAACAAYAAAAHAA0AAAACAAYAAAAIAA0AAAAEAAUAAAAJAA0AAAACAAYAAAAKAA0AAAAEAAUAAAALAA0AAAAEAAUAAAAMAA0AAAACAAYAAAANAA0AAAACAAYAAAAOAA0AAAAEAAUAAAAPAA0AAAAEAAUAAAAQAA0AAAAEAAUAAAARAA0AAAACAAYAAAASAA0AAAACAAYAAAATAA0AAAAEAAUAAAAUAA0AAAACAAYAAAAVAA0AAAACAAYAAAAWAA0AAAACAAYAAAAXAA0AAAAEAAUAAAAYAA0AAAACAAYAAAAZAA0AAAAEAAUAAAAAAA4AAAACAAYAAAABAA4AAAACAAYAAAACAA4AAAAEAAUAAAADAA4AAAACAAYAAAAEAA4AAAAEAAUAAAAFAA4AAAACAAYAAAAGAA4AAAAEAAUAAAAHAA4AAAAEAAUAAAAIAA4AAAAEAAUAAAAJAA4AAAAEAAUAAAAKAA4AAAAEAAUAAAALAA4AAAAEAAUAAAAMAA4AAAACAAYAAAANAA4AAAACAAYAAAAOAA4AAAACAAYAAAAPAA4AAAACAAYAAAAQAA4AAAAEAAUAAAARAA4AAAACAAYAAAASAA4AAAACAAYAAAATAA4AAAACAAYAAAAUAA4AAAACAAYAAAAVAA4AAAACAAYAAAAWAA4AAAAEAAUAAAAXAA4AAAAEAAUAAAAYAA4AAAACAAYAAAAZAA4AAAAEAAUAAAD//wkAAAACAAEAAAD//woAAAAEAAAAAAD//wsAAAAEAAAAAAD//wwAAAAFAAAAAAD//wQAAAAFAAAAAAD//wIAAAAFAAAAAAD//wMAAAAFAAAAAAD//wEAAAAFAAAAAAD//wAAAAAFAAAAAAAAAAUAAAACAAcAAAD//wUAAAACAAcAAAD//w0AAAAEAAEAAAD//w4AAAAEAAEAAAD//wYAAAAJAAAAAAD//wcAAAAJAAAAAAD//wgAAAAJAAAAAAAKAAkAAAAJAAEAAAAVAAIAAAAKAAAAAAA=")
tile_set = ExtResource("5_4etix")
[node name="TerrainDetailsA" type="TileMapLayer" parent="Level/TerrainTileMaps" unique_id=1513560262]
z_index = 1
position = Vector2(9, 9)
tile_map_data = PackedByteArray("AAAAAAAAAAACAAYAAAABAAAAAAADAAYAAAAAAAEAAAACAAYAAAABAAEAAAADAAYAAAAAAAIAAAACAAcAAAABAAIAAAADAAcAAAAOAAIAAAARAAAAAAAPAAIAAAASAAAAAAAQAAIAAAATAAAAAAABAAMAAAAEAAYAADAKAAMAAAARAAAAAAALAAMAAAASAAAAAAAMAAMAAAATAAAAAAAOAAMAAAARAAEAAAAPAAMAAAASAAEAAAAQAAMAAAATAAEAAAAKAAQAAAARAAIAAAALAAQAAAASAAIAAAAMAAQAAAATAAIAAAAOAAQAAAARAAIAAAAPAAQAAAASAAIAAAAQAAQAAAATAAIAAAACAAoAAAAIAAYAAAAWAAoAAAAEAAcAAAABAAsAAAABAAEAAAACAAsAAAACAAEAAAADAAsAAAADAAEAAAAVAAsAAAABAAUAAAAWAAsAAAACAAUAAAAXAAsAAAADAAUAAAABAAwAAAABAAYAAAACAAwAAAACAAYAAAADAAwAAAADAAYAAAAOAAwAAAAEAAYAAAAVAAwAAAABAAYAAAAWAAwAAAAEAAUAAAAXAAwAAAADAAYAAAABAA0AAAABAAYAAAACAA0AAAAEAAUAAAADAA0AAAADAAYAAAANAA0AAAABAAMAAAAOAA0AAAACAAMAAAAPAA0AAAACAAMAAAAQAA0AAAADAAMAAAAVAA0AAAABAAYAAAAWAA0AAAACAAYAAAAXAA0AAAADAAYAAAABAA4AAAABAAYAAAACAA4AAAACAAYAAAADAA4AAAADAAYAAAANAA4AAAABAAYAAAAOAA4AAAAEAAUAAAAPAA4AAAACAAYAAAAQAA4AAAADAAYAAAAVAA4AAAABAAYAAAAWAA4AAAAEAAUAAAAXAA4AAAADAAYAAAA=")
tile_set = ExtResource("5_4etix")
[node name="TerrainDetailsB" type="TileMapLayer" parent="Level/TerrainTileMaps" unique_id=478648603]
z_index = 2
position = Vector2(9, 9)
tile_map_data = PackedByteArray("AAAFAAsAAAAFAAYAAAADAAwAAAABAAEAAAAEAAwAAAACAAEAAAAFAAwAAAACAAEAAAAGAAwAAAADAAEAAAADAA0AAAABAAYAAAAEAA0AAAACAAYAAAAFAA0AAAAEAAUAAAAGAA0AAAADAAYAAAADAA4AAAABAAYAAAAEAA4AAAAEAAUAAAAFAA4AAAACAAYAAAAGAA4AAAADAAYAAAA=")
tile_set = ExtResource("5_4etix")
[node name="ActorsAndCharacters" type="Node2D" parent="Level" unique_id=2036761714]
[node name="Player" parent="Level/ActorsAndCharacters" unique_id=1343528246 instance=ExtResource("9_bauo3")]
z_index = 10
position = Vector2(102, 132)
rotation = -3.1415927
scale = Vector2(1, -1)
[node name="PrefabInstances" type="Node2D" parent="Level" unique_id=2013556771]
[node name="Structures" type="Node2D" parent="Level/PrefabInstances" unique_id=1811607442]
[node name="Hazards" type="Node2D" parent="Level/PrefabInstances" unique_id=888595377]
[node name="Spikes_01" parent="Level/PrefabInstances/Hazards" unique_id=1025977450 instance=ExtResource("15_ycytw")]
z_index = 5
position = Vector2(270, 216)
[node name="Spikes_02" parent="Level/PrefabInstances/Hazards" unique_id=1262276584 instance=ExtResource("15_ycytw")]
z_index = 5
position = Vector2(216, 216)
[node name="Interactables" type="Node2D" parent="Level/PrefabInstances" unique_id=769532488]
[node name="SpringRed_01" parent="Level/PrefabInstances/Interactables" unique_id=34192139 instance=ExtResource("16_nih4k")]
z_index = 5
position = Vector2(325, 108)
[node name="Collectibles" type="Node2D" parent="Level/PrefabInstances" unique_id=2086540192]
[node name="CoinGoldRound_01" parent="Level/PrefabInstances/Collectibles" unique_id=926105584 instance=ExtResource("17_rmlt8")]
z_index = 5
position = Vector2(351, 27)
[node name="CoinGoldRound_02" parent="Level/PrefabInstances/Collectibles" unique_id=1674416025 instance=ExtResource("17_rmlt8")]
z_index = 5
position = Vector2(333, 45)
[node name="CoinGoldRound_03" parent="Level/PrefabInstances/Collectibles" unique_id=1087706364 instance=ExtResource("17_rmlt8")]
z_index = 5
position = Vector2(315, 63)
[node name="KeyGold_01" parent="Level/PrefabInstances/Collectibles" unique_id=2060959680 instance=ExtResource("18_keygold")]
z_index = 5
position = Vector2(198, 162)
[node name="Signs" type="Node2D" parent="Level/PrefabInstances" unique_id=113197076]
+29
View File
@@ -0,0 +1,29 @@
[gd_scene format=3 uid="uid://c1u8k6ny02t4y"]
[ext_resource type="Texture2D" uid="uid://cgkn1cd8uhunb" path="res://assets/game/characters/player_green_idle.png" id="1_character"]
[ext_resource type="Script" uid="uid://b0gltif7vthau" path="res://scripts/player_controller.gd" id="1_g2els"]
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_player"]
radius = 5.0
height = 17.0
[node name="Player" type="CharacterBody2D" unique_id=2098904787]
collision_layer = 2
script = ExtResource("1_g2els")
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=921388463]
texture_filter = 1
texture = ExtResource("1_character")
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=151099089]
position = Vector2(0, 2)
shape = SubResource("CapsuleShape2D_player")
[node name="Camera2D" type="Camera2D" parent="."]
zoom = Vector2(2, 2)
limit_left = 0
limit_top = 0
limit_right = 468
limit_bottom = 270
position_smoothing_enabled = true
position_smoothing_speed = 6.0
@@ -0,0 +1,19 @@
[gd_scene load_steps=4 format=3]
[ext_resource type="Texture2D" path="res://assets/game/collectibles/coin_gold_round.png" id="1_texture"]
[ext_resource type="Script" path="res://scripts/collectible.gd" id="2_collectible"]
[sub_resource type="CircleShape2D" id="Shape_coin"]
radius = 5.0
[node name="CoinGoldRound" type="Area2D" groups=["collectible"]]
collision_layer = 16
collision_mask = 2
script = ExtResource("2_collectible")
[node name="Sprite" type="Sprite2D" parent="."]
texture_filter = 1
texture = ExtResource("1_texture")
[node name="PickupArea" type="CollisionShape2D" parent="."]
shape = SubResource("Shape_coin")
@@ -0,0 +1,18 @@
[gd_scene load_steps=3 format=3]
[ext_resource type="Texture2D" path="res://assets/game/collectibles/coin_gold_thin.png" id="1_texture"]
[sub_resource type="RectangleShape2D" id="Shape_coin"]
size = Vector2(7, 13)
[node name="CoinGoldThin" type="Area2D" groups=["collectible"]]
collision_layer = 16
collision_mask = 2
[node name="Sprite" type="Sprite2D" parent="."]
texture_filter = 1
texture = ExtResource("1_texture")
[node name="PickupArea" type="CollisionShape2D" parent="."]
shape = SubResource("Shape_coin")
+18
View File
@@ -0,0 +1,18 @@
[gd_scene load_steps=3 format=3]
[ext_resource type="Texture2D" path="res://assets/game/collectibles/gem_blue.png" id="1_texture"]
[sub_resource type="CircleShape2D" id="Shape_gem"]
radius = 6.0
[node name="GemBlue" type="Area2D" groups=["collectible"]]
collision_layer = 16
collision_mask = 2
[node name="Sprite" type="Sprite2D" parent="."]
texture_filter = 1
texture = ExtResource("1_texture")
[node name="PickupArea" type="CollisionShape2D" parent="."]
shape = SubResource("Shape_gem")
+23
View File
@@ -0,0 +1,23 @@
[gd_scene load_steps=5 format=3]
[ext_resource type="Texture2D" path="res://assets/game/tilesets/kenney_tiles_atlas.png" id="1_atlas"]
[ext_resource type="Script" path="res://scripts/key.gd" id="2_key"]
[sub_resource type="AtlasTexture" id="AtlasTexture_key"]
atlas = ExtResource("1_atlas")
region = Rect2(126, 18, 18, 18)
[sub_resource type="CircleShape2D" id="Shape_pickup"]
radius = 7.0
[node name="KeyGold" type="Area2D"]
collision_layer = 16
collision_mask = 2
script = ExtResource("2_key")
[node name="Sprite" type="Sprite2D" parent="."]
texture_filter = 1
texture = SubResource("AtlasTexture_key")
[node name="PickupArea" type="CollisionShape2D" parent="."]
shape = SubResource("Shape_pickup")
@@ -0,0 +1,35 @@
[gd_scene load_steps=6 format=3]
[ext_resource type="Texture2D" path="res://assets/game/vegetation/tree_canopy_left.png" id="1_left"]
[ext_resource type="Texture2D" path="res://assets/game/vegetation/tree_canopy_middle.png" id="2_middle"]
[ext_resource type="Texture2D" path="res://assets/game/vegetation/tree_canopy_right.png" id="3_right"]
[ext_resource type="Texture2D" path="res://assets/game/vegetation/tree_trunk.png" id="4_trunk"]
[sub_resource type="RectangleShape2D" id="Shape_trunk"]
size = Vector2(14, 18)
[node name="TreeSmall" type="StaticBody2D"]
collision_layer = 1
collision_mask = 0
[node name="CanopyLeft" type="Sprite2D" parent="."]
texture_filter = 1
position = Vector2(-18, -18)
texture = ExtResource("1_left")
[node name="CanopyMiddle" type="Sprite2D" parent="."]
texture_filter = 1
position = Vector2(0, -18)
texture = ExtResource("2_middle")
[node name="CanopyRight" type="Sprite2D" parent="."]
texture_filter = 1
position = Vector2(18, -18)
texture = ExtResource("3_right")
[node name="Trunk" type="Sprite2D" parent="."]
texture_filter = 1
texture = ExtResource("4_trunk")
[node name="Collision" type="CollisionShape2D" parent="."]
shape = SubResource("Shape_trunk")
+20
View File
@@ -0,0 +1,20 @@
[gd_scene load_steps=4 format=3]
[ext_resource type="Texture2D" path="res://assets/game/obstacles/spikes_double.png" id="1_texture"]
[ext_resource type="Script" path="res://scripts/hazard.gd" id="2_hazard"]
[sub_resource type="RectangleShape2D" id="Shape_spikes"]
size = Vector2(16, 8)
[node name="SpikesDouble" type="Area2D" groups=["hazard"]]
collision_layer = 4
collision_mask = 2
script = ExtResource("2_hazard")
[node name="Sprite" type="Sprite2D" parent="."]
texture_filter = 1
texture = ExtResource("1_texture")
[node name="DetectionArea" type="CollisionShape2D" parent="."]
position = Vector2(0, 4)
shape = SubResource("Shape_spikes")
@@ -0,0 +1,30 @@
[gd_scene load_steps=5 format=3]
[ext_resource type="Texture2D" path="res://assets/game/interactables/spring_red.png" id="1_texture"]
[ext_resource type="Script" path="res://scripts/spring.gd" id="2_spring"]
[sub_resource type="RectangleShape2D" id="Shape_spring_body"]
size = Vector2(16, 10)
[sub_resource type="RectangleShape2D" id="Shape_spring_trigger"]
size = Vector2(18, 14)
[node name="SpringRed" type="StaticBody2D" groups=["spring"]]
collision_layer = 1
collision_mask = 0
[node name="Sprite" type="Sprite2D" parent="."]
texture_filter = 1
texture = ExtResource("1_texture")
[node name="Collision" type="CollisionShape2D" parent="."]
position = Vector2(0, 3)
shape = SubResource("Shape_spring_body")
[node name="BounceArea" type="Area2D" parent="."]
collision_layer = 8
collision_mask = 2
script = ExtResource("2_spring")
[node name="TriggerShape" type="CollisionShape2D" parent="BounceArea"]
shape = SubResource("Shape_spring_trigger")
@@ -0,0 +1,17 @@
[gd_scene load_steps=3 format=3]
[ext_resource type="Texture2D" path="res://assets/game/signs/direction_sign_left.png" id="1_texture"]
[sub_resource type="RectangleShape2D" id="Shape_sign"]
size = Vector2(18, 18)
[node name="DirectionSignLeft" type="StaticBody2D"]
collision_layer = 1
collision_mask = 0
[node name="Sprite" type="Sprite2D" parent="."]
texture_filter = 1
texture = ExtResource("1_texture")
[node name="Collision" type="CollisionShape2D" parent="."]
shape = SubResource("Shape_sign")
@@ -0,0 +1,17 @@
[gd_scene load_steps=3 format=3]
[ext_resource type="Texture2D" path="res://assets/game/signs/direction_sign_right.png" id="1_texture"]
[sub_resource type="RectangleShape2D" id="Shape_sign"]
size = Vector2(18, 18)
[node name="DirectionSignRight" type="StaticBody2D"]
collision_layer = 1
collision_mask = 0
[node name="Sprite" type="Sprite2D" parent="."]
texture_filter = 1
texture = ExtResource("1_texture")
[node name="Collision" type="CollisionShape2D" parent="."]
shape = SubResource("Shape_sign")
+18
View File
@@ -0,0 +1,18 @@
[gd_scene load_steps=3 format=3]
[ext_resource type="Texture2D" path="res://assets/game/structures/crate.png" id="1_texture"]
[sub_resource type="RectangleShape2D" id="Shape_crate"]
size = Vector2(18, 18)
[node name="Crate" type="StaticBody2D"]
collision_layer = 1
collision_mask = 0
[node name="Sprite" type="Sprite2D" parent="."]
texture_filter = 1
texture = ExtResource("1_texture")
[node name="Collision" type="CollisionShape2D" parent="."]
shape = SubResource("Shape_crate")