diff --git a/scenes/level_2.tscn b/scenes/level_2.tscn new file mode 100644 index 0000000..5baf56b --- /dev/null +++ b/scenes/level_2.tscn @@ -0,0 +1,88 @@ +[gd_scene load_steps=9 format=3] + +[ext_resource type="Texture2D" path="res://assets/game/backgrounds/cloud_left.png" id="1_cloud1"] +[ext_resource type="Texture2D" path="res://assets/game/backgrounds/cloud_trees.png" id="2_cloud2"] +[ext_resource type="Texture2D" path="res://assets/game/backgrounds/cloud_hills.png" id="3_cloud3"] +[ext_resource type="Texture2D" path="res://assets/game/backgrounds/cloud_right.png" id="4_cloud4"] +[ext_resource type="TileSet" path="res://assets/game/tilesets/kenney_terrain_tileset.tres" id="5_tileset"] +[ext_resource type="PackedScene" path="res://scenes/player.tscn" id="6_player"] +[ext_resource type="PackedScene" path="res://scenes/hud.tscn" id="7_hud"] +[ext_resource type="PackedScene" path="res://scenes/death_screen.tscn" id="8_death"] +[ext_resource type="PackedScene" path="res://scenes/level_clear.tscn" id="9_clear"] +[ext_resource type="Script" path="res://scripts/hidden_passages.gd" id="10_hidden"] + +[node name="Main" type="Node2D"] + +[node name="HUD" parent="." instance=ExtResource("7_hud")] + +[node name="DeathScreen" parent="." instance=ExtResource("8_death")] + +[node name="LevelClear" parent="." instance=ExtResource("9_clear")] + +[node name="Level" type="Node2D" parent="."] + +[node name="Background" type="Node2D" parent="Level"] + +[node name="SkyColor" type="Polygon2D" parent="Level/Background"] +z_index = -30 +color = Color(0.8509804, 0.9411765, 0.9372549, 1) +polygon = PackedVector2Array(0, 0, 468, 0, 468, 270, 0, 270) + +[node name="CloudBand_01" type="Sprite2D" parent="Level/Background"] +z_index = -20 +texture_filter = 1 +position = Vector2(12, 150) +texture = ExtResource("1_cloud1") + +[node name="CloudBand_02" type="Sprite2D" parent="Level/Background"] +z_index = -20 +texture_filter = 1 +position = Vector2(36, 150) +texture = ExtResource("2_cloud2") + +[node name="CloudBand_03" type="Sprite2D" parent="Level/Background"] +z_index = -20 +texture_filter = 1 +position = Vector2(60, 150) +texture = ExtResource("3_cloud3") + +[node name="CloudBand_04" type="Sprite2D" parent="Level/Background"] +z_index = -20 +texture_filter = 1 +position = Vector2(84, 150) +texture = ExtResource("4_cloud4") + +[node name="TerrainTileMaps" type="Node2D" parent="Level"] +script = ExtResource("10_hidden") +hidden_cells = [] + +[node name="TerrainBase" type="TileMapLayer" parent="Level/TerrainTileMaps"] +position = Vector2(9, 9) +tile_set = ExtResource("5_tileset") + +[node name="TerrainDetailsA" type="TileMapLayer" parent="Level/TerrainTileMaps"] +position = Vector2(9, 9) +z_index = 1 +tile_set = ExtResource("5_tileset") + +[node name="TerrainDetailsB" type="TileMapLayer" parent="Level/TerrainTileMaps"] +position = Vector2(9, 9) +z_index = 2 +tile_set = ExtResource("5_tileset") + +[node name="ActorsAndCharacters" type="Node2D" parent="Level"] + +[node name="Player" parent="Level/ActorsAndCharacters" instance=ExtResource("6_player")] +position = Vector2(102, 132) + +[node name="PrefabInstances" type="Node2D" parent="Level"] + +[node name="Structures" type="Node2D" parent="Level/PrefabInstances"] + +[node name="Hazards" type="Node2D" parent="Level/PrefabInstances"] + +[node name="Interactables" type="Node2D" parent="Level/PrefabInstances"] + +[node name="Collectibles" type="Node2D" parent="Level/PrefabInstances"] + +[node name="Signs" type="Node2D" parent="Level/PrefabInstances"] diff --git a/scenes/main.tscn b/scenes/main.tscn index df84708..15d491f 100644 --- a/scenes/main.tscn +++ b/scenes/main.tscn @@ -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/level_2.tscn" [node name="Level" type="Node2D" parent="." unique_id=1678372922] diff --git a/scripts/diamond.gd.uid b/scripts/diamond.gd.uid new file mode 100644 index 0000000..99ce7a9 --- /dev/null +++ b/scripts/diamond.gd.uid @@ -0,0 +1 @@ +uid://dbjrrn5xe6nbh diff --git a/scripts/door.gd.uid b/scripts/door.gd.uid new file mode 100644 index 0000000..8e4c73c --- /dev/null +++ b/scripts/door.gd.uid @@ -0,0 +1 @@ +uid://dr3fyoan8fwhj diff --git a/scripts/level_clear.gd b/scripts/level_clear.gd index 57dfab7..1ad487a 100644 --- a/scripts/level_clear.gd +++ b/scripts/level_clear.gd @@ -6,6 +6,9 @@ extends CanvasLayer @export var fade_time: float = 0.8 @export var button_delay: float = 0.3 +## 点「进入下一关」时加载哪个场景。 +## 留空 = 重新加载本关;填 res://scenes/level_2.tscn 之类就跳到下一关。 +@export_file("*.tscn") var next_level_scene: String = "" var _fade: ColorRect = null var _center: CenterContainer = null @@ -29,6 +32,8 @@ func _ready() -> void: _fade.color = Color(0.0, 0.0, 0.0, 0.0) if _center != null: _center.visible = false + if next_level_scene.is_empty() and _button != null: + _button.text = "重新开始 (R)" func show_clear() -> void: @@ -65,8 +70,9 @@ func _unhandled_input(event: InputEvent) -> void: next_level() -## 目前项目里只有一关,所以"下一关"先做成重新加载本关。 -## 以后真加了第二关,把这里换成 change_scene_to_file("res://scenes/level2.tscn") 即可。 func next_level() -> void: get_tree().paused = false - get_tree().reload_current_scene() + if next_level_scene.is_empty(): + get_tree().reload_current_scene() + else: + get_tree().change_scene_to_file(next_level_scene) diff --git a/scripts/level_clear.gd.uid b/scripts/level_clear.gd.uid new file mode 100644 index 0000000..f828574 --- /dev/null +++ b/scripts/level_clear.gd.uid @@ -0,0 +1 @@ +uid://cxfohn44nkm28