Add patrolling enemies and link level 1 to level 2

New walker prefab (mushroom_red sprite) patrols a platform, turns at walls and ledges, drains a heart on contact and dies when stomped, bouncing the player up. Three are placed in level2. The level 2 spawn point is set to cell (7,11) so the player starts standing on the floor instead of falling in from mid-air, and level 1's LevelClear now loads level2.tscn.
This commit is contained in:
2026-10-07 22:02:42 +08:00
parent 84020864cc
commit 74e4bd1e97
4 changed files with 386 additions and 0 deletions
+263
View File
@@ -0,0 +1,263 @@
[gd_scene format=4 uid="uid://b14qjya7pedi1"]
[ext_resource type="PackedScene" path="res://scenes/hud.tscn" id="1_g8vcy"]
[ext_resource type="PackedScene" path="res://scenes/death_screen.tscn" id="2_cqal4"]
[ext_resource type="PackedScene" path="res://scenes/level_clear.tscn" id="3_o3sye"]
[ext_resource type="Texture2D" uid="uid://djmk0srfgyafe" path="res://assets/game/backgrounds/cloud_left.png" id="4_24ks5"]
[ext_resource type="Texture2D" uid="uid://dptqmtay4plwp" path="res://assets/game/backgrounds/cloud_trees.png" id="5_s4es8"]
[ext_resource type="Texture2D" uid="uid://dys7320ghojh6" path="res://assets/game/backgrounds/cloud_hills.png" id="6_63e4f"]
[ext_resource type="Texture2D" uid="uid://1b8hp0rm864l" path="res://assets/game/backgrounds/cloud_right.png" id="7_y6lc1"]
[ext_resource type="Script" uid="uid://dxwa7fxghp3a2" path="res://scripts/hidden_passages.gd" id="8_ekhvm"]
[ext_resource type="TileSet" uid="uid://dkowcf1ljh41j" path="res://assets/game/tilesets/kenney_terrain_tileset.tres" id="9_nflru"]
[ext_resource type="PackedScene" uid="uid://c1u8k6ny02t4y" path="res://scenes/player.tscn" id="10_ikw2v"]
[ext_resource type="PackedScene" path="res://scenes/prefabs/hazards/spikes_double.tscn" id="11_cgqhq"]
[ext_resource type="PackedScene" path="res://scenes/prefabs/hazards/spikes_grey.tscn" id="12_ttvjw"]
[ext_resource type="PackedScene" path="res://scenes/prefabs/interactables/spring_red.tscn" id="13_ac7c3"]
[ext_resource type="PackedScene" path="res://scenes/prefabs/interactables/door.tscn" id="14_qo7hg"]
[ext_resource type="PackedScene" path="res://scenes/prefabs/collectibles/coin_gold_round.tscn" id="15_odav0"]
[ext_resource type="PackedScene" path="res://scenes/prefabs/collectibles/key_gold.tscn" id="16_3xffc"]
[ext_resource type="PackedScene" path="res://scenes/prefabs/collectibles/diamond.tscn" id="17_icuov"]
[ext_resource type="PackedScene" path="res://scenes/prefabs/enemies/walker.tscn" id="18_walker"]
[node name="Main" type="Node2D" unique_id=2061129075]
[node name="HUD" parent="." unique_id=215179112 instance=ExtResource("1_g8vcy")]
[node name="DeathScreen" parent="." unique_id=1952687359 instance=ExtResource("2_cqal4")]
[node name="LevelClear" parent="." unique_id=1589634220 instance=ExtResource("3_o3sye")]
[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("4_24ks5")
[node name="CloudBand_02" type="Sprite2D" parent="Level/Background" unique_id=225493882]
z_index = -20
texture_filter = 1
position = Vector2(36, 150)
texture = ExtResource("5_s4es8")
[node name="CloudBand_03" type="Sprite2D" parent="Level/Background" unique_id=646834403]
z_index = -20
texture_filter = 1
position = Vector2(60, 150)
texture = ExtResource("6_63e4f")
[node name="CloudBand_04" type="Sprite2D" parent="Level/Background" unique_id=1012727532]
z_index = -20
texture_filter = 1
position = Vector2(84, 150)
texture = ExtResource("7_y6lc1")
[node name="CloudBand_05" type="Sprite2D" parent="Level/Background" unique_id=1685434781]
z_index = -20
texture_filter = 1
position = Vector2(108, 150)
texture = ExtResource("4_24ks5")
[node name="CloudBand_06" type="Sprite2D" parent="Level/Background" unique_id=1425986424]
z_index = -20
texture_filter = 1
position = Vector2(132, 150)
texture = ExtResource("5_s4es8")
[node name="CloudBand_07" type="Sprite2D" parent="Level/Background" unique_id=1333305041]
z_index = -20
texture_filter = 1
position = Vector2(156, 150)
texture = ExtResource("6_63e4f")
[node name="CloudBand_08" type="Sprite2D" parent="Level/Background" unique_id=55356860]
z_index = -20
texture_filter = 1
position = Vector2(180, 150)
texture = ExtResource("7_y6lc1")
[node name="CloudBand_09" type="Sprite2D" parent="Level/Background" unique_id=379152848]
z_index = -20
texture_filter = 1
position = Vector2(204, 150)
texture = ExtResource("4_24ks5")
[node name="CloudBand_10" type="Sprite2D" parent="Level/Background" unique_id=325990577]
z_index = -20
texture_filter = 1
position = Vector2(228, 150)
texture = ExtResource("5_s4es8")
[node name="CloudBand_11" type="Sprite2D" parent="Level/Background" unique_id=1505438200]
z_index = -20
texture_filter = 1
position = Vector2(252, 150)
texture = ExtResource("6_63e4f")
[node name="CloudBand_12" type="Sprite2D" parent="Level/Background" unique_id=190709163]
z_index = -20
texture_filter = 1
position = Vector2(276, 150)
texture = ExtResource("7_y6lc1")
[node name="CloudBand_13" type="Sprite2D" parent="Level/Background" unique_id=349156114]
z_index = -20
texture_filter = 1
position = Vector2(300, 150)
texture = ExtResource("4_24ks5")
[node name="CloudBand_14" type="Sprite2D" parent="Level/Background" unique_id=1838903106]
z_index = -20
texture_filter = 1
position = Vector2(324, 150)
texture = ExtResource("5_s4es8")
[node name="CloudBand_15" type="Sprite2D" parent="Level/Background" unique_id=169474301]
z_index = -20
texture_filter = 1
position = Vector2(348, 150)
texture = ExtResource("6_63e4f")
[node name="CloudBand_16" type="Sprite2D" parent="Level/Background" unique_id=156763289]
z_index = -20
texture_filter = 1
position = Vector2(372, 150)
texture = ExtResource("7_y6lc1")
[node name="CloudBand_17" type="Sprite2D" parent="Level/Background" unique_id=161240142]
z_index = -20
texture_filter = 1
position = Vector2(396, 150)
texture = ExtResource("4_24ks5")
[node name="CloudBand_18" type="Sprite2D" parent="Level/Background" unique_id=1823235224]
z_index = -20
texture_filter = 1
position = Vector2(420, 150)
texture = ExtResource("5_s4es8")
[node name="CloudBand_19" type="Sprite2D" parent="Level/Background" unique_id=2092676382]
z_index = -20
texture_filter = 1
position = Vector2(444, 150)
texture = ExtResource("6_63e4f")
[node name="CloudBand_20" type="Sprite2D" parent="Level/Background" unique_id=124375716]
z_index = -20
texture_filter = 1
position = Vector2(468, 150)
texture = ExtResource("7_y6lc1")
[node name="TerrainTileMaps" type="Node2D" parent="Level" unique_id=652327492]
script = ExtResource("8_ekhvm")
[node name="TerrainBase" type="TileMapLayer" parent="Level/TerrainTileMaps" unique_id=91115499]
position = Vector2(9, 9)
tile_map_data = PackedByteArray("AAD//wkAAAACAAEAAAD//woAAAAEAAAAAAABAA0AAAACAAYAAAACAA0AAAAEAAUAAAACAA4AAAAEAAUAAAADAA0AAAACAAYAAAABAAoAAAACAAYAAAAAAAoAAAAEAAUAAAAAAAkAAAACAAEAAAACAAsAAAAEAAUAAAAAAA0AAAAEAAUAAAD//w0AAAAEAAEAAAAFAA0AAAAEAAUAAAAEAA4AAAAEAAUAAAADAA4AAAACAAYAAAAAAA4AAAACAAYAAAABAA4AAAACAAYAAAAHAAwAAAACAAEAAAALAAwAAAACAAEAAAAKAA0AAAAEAAUAAAAIAA4AAAAEAAUAAAALAA4AAAAEAAUAAAAMAA4AAAACAAYAAAANAA0AAAACAAYAAAAOAA0AAAAEAAUAAAAPAA0AAAAEAAUAAAAQAA0AAAAEAAUAAAARAAwAAAACAAUAAAATAAwAAAACAAUAAAAVAAsAAAACAAYAAAAWAAsAAAAEAAUAAAAUAAwAAAACAAYAAAAQAAwAAAACAAMAAAAKAA4AAAAEAAUAAAAJAA4AAAAEAAUAAAAFAA4AAAACAAYAAAAGAA4AAAAEAAUAAAAHAA4AAAAEAAUAAAANAA4AAAACAAYAAAAOAA4AAAACAAYAAAAPAA4AAAACAAYAAAASAA0AAAACAAYAAAATAA0AAAAEAAUAAAAUAA0AAAACAAYAAAAVAA0AAAACAAYAAAAWAA0AAAACAAYAAAAXAA0AAAAEAAUAAAALAA0AAAAEAAUAAAAMAA0AAAACAAYAAAAPAAwAAAACAAMAAAAXAAsAAAAEAAUAAAAYAAsAAAAEAAUAAAAZAAsAAAACAAYAAAAZAAwAAAACAAYAAAAYAAwAAAAEAAUAAAAZAA4AAAAEAAUAAAAXAA4AAAAEAAUAAAAWAA4AAAAEAAUAAAAVAA4AAAACAAYAAAAUAA4AAAACAAYAAAATAA4AAAACAAYAAAASAA4AAAACAAYAAAAYAA4AAAACAAYAAAARAA4AAAACAAYAAAAEAA0AAAACAAYAAAD//w4AAAAEAAEAAAABAAkAAAACAAEAAAAIAAwAAAACAAEAAAAOAAwAAAACAAMAAAANAAwAAAACAAMAAAAMAAwAAAACAAMAAAAUAAkAAAABAAUAAAAUAAoAAAABAAYAAAAPAAgAAAASAAQAABAWAAoAAAACAAYAAAAXAAcAAAACAAUAAAAYAAkAAAACAAYAAAAYAAoAAAACAAYAAAAXAAoAAAACAAYAAAAXAAkAAAACAAYAAAAZAAkAAAACAAYAAAAZAAoAAAACAAYAAAAQAA4AAAAEAAUAAAARAA0AAAACAAYAAAASAAwAAAACAAUAAAAVAAoAAAACAAYAAAAWAAkAAAACAAUAAAAXAAgAAAAEAAEAAAAUAAsAAAAFAAEAAAAVAAwAAAAEAAUAAAAWAAwAAAACAAYAAAAXAAwAAAAEAAUAAAAYAA0AAAACAAYAAAAZAA0AAAAEAAUAAAAAAAwAAAACAAYAAAACAAwAAAACAAYAAAADAAwAAAAEAAUAAAAEAAwAAAACAAYAAAAFAAwAAAAEAAUAAAAGAAwAAAAEAAUAAAAGAA0AAAACAAYAAAAHAA0AAAACAAYAAAAIAA0AAAAEAAUAAAAJAA0AAAACAAYAAAAJAAwAAAACAAEAAAAKAAwAAAACAAEAAAD//wwAAAAFAAAAAAD//wsAAAAEAAAAAAAAAAsAAAAEAAUAAAABAAsAAAACAAYAAAABAAwAAAACAAYAAAAYAAcAAAACAAUAAAAZAAcAAAADAAUAAAAYAAgAAAACAAYAAAAZAAgAAAACAAYAAAAVAAkAAAACAAUAAAADAAsAAAACAAYAAAAEAAsAAAACAAEAAAAFAAsAAAACAAEAAAAGAAsAAAACAAEAAAACAAoAAAACAAEAAAADAAoAAAACAAEAAAARAAcAAAAOAAcAAAASAAcAAAAOAAcAAAAQAAcAAAAOAAcAAAAPAAcAAAANAAcAAAAIAAYAAAANAAcAAAATAAcAAAAPAAcAAAAMAAYAAAAPAAcAAAALAAYAAAAOAAcAAAAKAAYAAAAOAAcAAAAJAAYAAAAOAAcAAAABAAgAAAARAAYAAAABAAcAAAAQAAUAAAABAAYAAAARAAUAAAABAAUAAAAQAAUAAAAAAAQAAAASAAIAAAABAAQAAAASAAIAAAACAAQAAAASAAIAAAD//wQAAAARAAIAAAAEAAQAAAATAAIAAAADAAQAAAASAAIAAAAAAAMAAAASAAEAAAABAAMAAAASAAEAAAACAAMAAAASAAEAAAADAAMAAAASAAAAAAAEAAMAAAATAAAAAAD//wMAAAARAAEAAAD//wIAAAARAAEAAAD//wEAAAARAAEAAAAAAAEAAAASAAEAAAAAAAIAAAASAAEAAAABAAEAAAASAAEAAAABAAIAAAASAAEAAAACAAEAAAASAAEAAAACAAIAAAASAAEAAAACAAYAAAATAAQAAAA=")
tile_set = ExtResource("9_nflru")
[node name="TerrainDetailsA" type="TileMapLayer" parent="Level/TerrainTileMaps" unique_id=1513560262]
z_index = 1
position = Vector2(9, 9)
tile_map_data = PackedByteArray("AAADAA0AAAADAAYAAAABAAwAAAABAAYAAAABAA0AAAABAAYAAAACAAoAAAAIAAYAAAACAAsAAAACAAEAAAADAAsAAAADAAEAAAACAAwAAAACAAYAAAACAA4AAAACAAYAAAAXAAsAAAADAAUAAAAXAAwAAAADAAYAAAAXAA0AAAADAAYAAAAXAA4AAAADAAYAAAAWAAoAAAAEAAcAAAAWAAsAAAACAAUAAAAWAAwAAAAEAAUAAAAWAA0AAAACAAYAAAAWAA4AAAAEAAUAAAAVAAsAAAABAAUAAAAVAAwAAAABAAYAAAAVAA0AAAABAAYAAAAVAA4AAAABAAYAAAAQAA4AAAADAAYAAAAOAA4AAAAEAAUAAAAPAA4AAAACAAYAAAAQAA0AAAADAAMAAAANAA4AAAABAAYAAAAOAAwAAAAEAAYAAAAPAA0AAAACAAMAAAAOAA0AAAACAAMAAAANAA0AAAABAAMAAAAQAAQAAAATAAIAAAAQAAMAAAATAAEAAAAPAAQAAAASAAIAAAAKAAMAAAARAAAAAAAKAAQAAAARAAIAAAALAAMAAAASAAAAAAAMAAMAAAATAAAAAAAOAAIAAAARAAAAAAAPAAIAAAASAAAAAAAOAAMAAAARAAEAAAAMAAQAAAATAAIAAAALAAQAAAASAAIAAAADAAwAAAADAAYAAAAOAAQAAAARAAIAAAAPAAMAAAASAAEAAAAQAAIAAAATAAAAAAACAA0AAAAEAAUAAAABAA4AAAABAAYAAAADAA4AAAADAAYAAAABAAsAAAABAAEAAAAOAAsAAAANAAUAAAAOAAoAAAAPAAUAAAAPAAsAAAANAAYAAAAPAAkAAAANAAYAAAAOAAkAAAANAAQAAAAQAAkAAAAOAAQAAAAQAAoAAAAPAAUAAAAQAAsAAAAOAAUAAAAPAAoAAAASAAcAAAAPAAgAAAAIAAMAAAAUAPz/AAASAAcAAAA=")
tile_set = ExtResource("9_nflru")
[node name="TerrainDetailsB" type="TileMapLayer" parent="Level/TerrainTileMaps" unique_id=478648603]
z_index = 2
position = Vector2(9, 9)
tile_map_data = PackedByteArray("AAAGAAwAAAADAAEAAAAGAA0AAAADAAYAAAAFAA4AAAACAAYAAAAFAAsAAAAFAAYAAAAFAAwAAAACAAEAAAAFAA0AAAAEAAUAAAAGAA4AAAADAAYAAAADAAwAAAABAAEAAAADAA0AAAABAAYAAAADAA4AAAABAAYAAAAEAAwAAAACAAEAAAAEAA0AAAACAAYAAAAEAA4AAAAEAAUAAAA=")
tile_set = ExtResource("9_nflru")
[node name="ActorsAndCharacters" type="Node2D" parent="Level" unique_id=2036761714]
[node name="Player" parent="Level/ActorsAndCharacters" unique_id=1343528246 instance=ExtResource("10_ikw2v")]
z_index = 10
position = Vector2(144, 215)
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("11_cgqhq")]
z_index = 5
position = Vector2(270, 216)
[node name="Spikes_02" parent="Level/PrefabInstances/Hazards" unique_id=1262276584 instance=ExtResource("11_cgqhq")]
z_index = 5
position = Vector2(335, 127)
[node name="SpikesGrey_01" parent="Level/PrefabInstances/Hazards" unique_id=214833071 instance=ExtResource("12_ttvjw")]
z_index = 5
position = Vector2(109, 199)
[node name="SpikesGrey_02" parent="Level/PrefabInstances/Hazards" unique_id=458791480 instance=ExtResource("12_ttvjw")]
z_index = 5
position = Vector2(331, 216)
[node name="Enemies" type="Node2D" parent="Level/PrefabInstances"]
[node name="Walker_01" parent="Level/PrefabInstances/Enemies" instance=ExtResource("18_walker")]
position = Vector2(216, 216)
[node name="Walker_02" parent="Level/PrefabInstances/Enemies" instance=ExtResource("18_walker")]
position = Vector2(306, 216)
start_direction = 1
[node name="Walker_03" parent="Level/PrefabInstances/Enemies" instance=ExtResource("18_walker")]
position = Vector2(90, 198)
start_direction = 1
[node name="Interactables" type="Node2D" parent="Level/PrefabInstances" unique_id=769532488]
[node name="SpringRed_01" parent="Level/PrefabInstances/Interactables" unique_id=34192139 instance=ExtResource("13_ac7c3")]
visible = false
z_index = 5
position = Vector2(448, 125)
[node name="Door_01" parent="Level/PrefabInstances/Interactables" unique_id=1264725697 instance=ExtResource("14_qo7hg")]
z_index = 5
position = Vector2(288, 37)
[node name="Collectibles" type="Node2D" parent="Level/PrefabInstances" unique_id=2086540192]
[node name="CoinGoldRound_01" parent="Level/PrefabInstances/Collectibles" unique_id=926105584 instance=ExtResource("15_odav0")]
z_index = 5
position = Vector2(79, 56)
[node name="CoinGoldRound_02" parent="Level/PrefabInstances/Collectibles" unique_id=1674416025 instance=ExtResource("15_odav0")]
z_index = 5
position = Vector2(179, 111)
[node name="CoinGoldRound_03" parent="Level/PrefabInstances/Collectibles" unique_id=1087706364 instance=ExtResource("15_odav0")]
z_index = 5
position = Vector2(219, 54)
[node name="KeyGold_01" parent="Level/PrefabInstances/Collectibles" unique_id=2060959680 instance=ExtResource("16_3xffc")]
z_index = 5
position = Vector2(126, 144)
[node name="Diamond_01" parent="Level/PrefabInstances/Collectibles" unique_id=909237898 instance=ExtResource("17_icuov")]
z_index = 5
position = Vector2(399, 161)
[node name="Diamond_02" parent="Level/PrefabInstances/Collectibles" unique_id=234727210 instance=ExtResource("17_icuov")]
z_index = 5
position = Vector2(204, 217)
[node name="Diamond_03" parent="Level/PrefabInstances/Collectibles" unique_id=1261326529 instance=ExtResource("17_icuov")]
z_index = 5
position = Vector2(270, 144)
[node name="Signs" type="Node2D" parent="Level/PrefabInstances" unique_id=113197076]
+1
View File
@@ -25,6 +25,7 @@
[node name="DeathScreen" parent="." unique_id=1952687359 instance=ExtResource("22_death")]
[node name="LevelClear" parent="." instance=ExtResource("26_clear")]
next_level_scene = "res://scenes/level2.tscn"
[node name="Level" type="Node2D" parent="." unique_id=1678372922]
+35
View File
@@ -0,0 +1,35 @@
[gd_scene load_steps=5 format=3]
[ext_resource type="Texture2D" path="res://assets/game/vegetation/mushroom_red.png" id="1_tex"]
[ext_resource type="Script" path="res://scripts/walker.gd" id="2_walker"]
[sub_resource type="RectangleShape2D" id="Shape_body"]
size = Vector2(12, 16)
[sub_resource type="RectangleShape2D" id="Shape_touch"]
size = Vector2(16, 16)
[node name="Walker" type="CharacterBody2D" groups=["enemy"]]
z_index = 5
collision_layer = 4
collision_mask = 1
script = ExtResource("2_walker")
[node name="Sprite" type="Sprite2D" parent="."]
texture_filter = 1
texture = ExtResource("1_tex")
[node name="Collision" type="CollisionShape2D" parent="."]
shape = SubResource("Shape_body")
[node name="FloorProbe" type="RayCast2D" parent="."]
position = Vector2(-6, 7)
target_position = Vector2(0, 9)
collision_mask = 1
[node name="TouchArea" type="Area2D" parent="."]
collision_layer = 0
collision_mask = 2
[node name="TouchShape" type="CollisionShape2D" parent="TouchArea"]
shape = SubResource("Shape_touch")