diff --git a/2d/layered_tile_maps/dynamic_tilemap_layers/README.md b/2d/layered_tile_maps/dynamic_tilemap_layers/README.md new file mode 100644 index 0000000..0dd9b53 --- /dev/null +++ b/2d/layered_tile_maps/dynamic_tilemap_layers/README.md @@ -0,0 +1,13 @@ +# Dynamic TileMap Layers + +Example of how to make a fake wall using TileMap's +`_tile_data_runtime_update()` method. It shows how +to disable collisions per layer. + +Language: GDScript + +Renderer: OpenGL + +## Screenshots + +![Screenshot](screenshots/fake_wall.png) diff --git a/2d/layered_tile_maps/dynamic_tilemap_layers/icon.png b/2d/layered_tile_maps/dynamic_tilemap_layers/icon.png new file mode 100644 index 0000000..1f364d6 Binary files /dev/null and b/2d/layered_tile_maps/dynamic_tilemap_layers/icon.png differ diff --git a/2d/layered_tile_maps/dynamic_tilemap_layers/icon.png.import b/2d/layered_tile_maps/dynamic_tilemap_layers/icon.png.import new file mode 100644 index 0000000..1100355 --- /dev/null +++ b/2d/layered_tile_maps/dynamic_tilemap_layers/icon.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bpov140lx7at3" +path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.png" +dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/dynamic_tilemap_layers/level/obstacle.png b/2d/layered_tile_maps/dynamic_tilemap_layers/level/obstacle.png new file mode 100644 index 0000000..781df34 Binary files /dev/null and b/2d/layered_tile_maps/dynamic_tilemap_layers/level/obstacle.png differ diff --git a/2d/layered_tile_maps/dynamic_tilemap_layers/level/obstacle.png.import b/2d/layered_tile_maps/dynamic_tilemap_layers/level/obstacle.png.import new file mode 100644 index 0000000..59598a7 --- /dev/null +++ b/2d/layered_tile_maps/dynamic_tilemap_layers/level/obstacle.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cs8h2qyuakmko" +path="res://.godot/imported/obstacle.png-06287f6b2d26dd03335fd87ab78c2cc2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/obstacle.png" +dest_files=["res://.godot/imported/obstacle.png-06287f6b2d26dd03335fd87ab78c2cc2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/dynamic_tilemap_layers/level/tile_map.gd b/2d/layered_tile_maps/dynamic_tilemap_layers/level/tile_map.gd new file mode 100644 index 0000000..717a89c --- /dev/null +++ b/2d/layered_tile_maps/dynamic_tilemap_layers/level/tile_map.gd @@ -0,0 +1,57 @@ +extends TileMap + + +var secret_layer: int # You can have multiple layers if you make this an array. +var player_in_secret: bool +var layer_alpha := 1.0 + + +func _init() -> void: + for i in get_layers_count(): # Find the secret layer by name. + if get_layer_name(i) == "Secret": + secret_layer = i + + +func _ready() -> void: + set_process(false) + + +func _process(delta: float) -> void: + if player_in_secret: + if layer_alpha > 0.3: + layer_alpha = move_toward(layer_alpha, 0.3, delta) # Animate the layer transparency. + set_layer_modulate(secret_layer, Color(1, 1, 1, layer_alpha)) + else: + set_process(false) + else: + if layer_alpha < 1.0: + layer_alpha = move_toward(layer_alpha, 1.0, delta) + set_layer_modulate(secret_layer, Color(1, 1, 1, layer_alpha)) + else: + set_process(false) + + +func _use_tile_data_runtime_update(layer: int, _coords: Vector2i) -> bool: + if layer == secret_layer: + return true + return false + + +func _tile_data_runtime_update(_layer: int, _coords: Vector2i, tile_data: TileData) -> void: + tile_data.set_collision_polygons_count(0, 0) # Remove collision for secret layer. + + +func _on_secret_detector_body_entered(body: Node2D) -> void: + if not body is CharacterBody2D: # Detect player only. + return + + player_in_secret = true + set_process(true) + + +func _on_secret_detector_body_exited(body: Node2D) -> void: + if not body is CharacterBody2D: + return + + player_in_secret = false + set_process(true) diff --git a/2d/layered_tile_maps/dynamic_tilemap_layers/player/player.gd b/2d/layered_tile_maps/dynamic_tilemap_layers/player/player.gd new file mode 100644 index 0000000..6bdbb58 --- /dev/null +++ b/2d/layered_tile_maps/dynamic_tilemap_layers/player/player.gd @@ -0,0 +1,32 @@ +extends CharacterBody2D + +const WALK_FORCE = 600 +const WALK_MAX_SPEED = 200 +const STOP_FORCE = 1300 +const JUMP_SPEED = 200 + +@onready var gravity = ProjectSettings.get_setting("physics/2d/default_gravity") + +func _physics_process(delta): + # Horizontal movement code. First, get the player's input. + var walk = WALK_FORCE * (Input.get_axis(&"move_left", &"move_right")) + # Slow down the player if they're not trying to move. + if abs(walk) < WALK_FORCE * 0.2: + # The velocity, slowed down a bit, and then reassigned. + velocity.x = move_toward(velocity.x, 0, STOP_FORCE * delta) + else: + velocity.x += walk * delta + # Clamp to the maximum horizontal movement speed. + velocity.x = clamp(velocity.x, -WALK_MAX_SPEED, WALK_MAX_SPEED) + + # Vertical movement code. Apply gravity. + velocity.y += gravity * delta + + # Move based on the velocity and snap to the ground. + # TODO: This information should be set to the CharacterBody properties instead of arguments: snap, Vector2.DOWN, Vector2.UP + # TODO: Rename velocity to linear_velocity in the rest of the script. + move_and_slide() + + # Check for jumping. is_on_floor() must be called after movement code. + if is_on_floor() and Input.is_action_just_pressed(&"jump"): + velocity.y = -JUMP_SPEED diff --git a/2d/layered_tile_maps/dynamic_tilemap_layers/player/player.png b/2d/layered_tile_maps/dynamic_tilemap_layers/player/player.png new file mode 100644 index 0000000..0e7d843 Binary files /dev/null and b/2d/layered_tile_maps/dynamic_tilemap_layers/player/player.png differ diff --git a/2d/layered_tile_maps/dynamic_tilemap_layers/player/player.png.import b/2d/layered_tile_maps/dynamic_tilemap_layers/player/player.png.import new file mode 100644 index 0000000..ec8c1fa --- /dev/null +++ b/2d/layered_tile_maps/dynamic_tilemap_layers/player/player.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dfb8rr2fakwgp" +path="res://.godot/imported/player.png-1ad27fc2a62fa126eae918723933dd6f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://player/player.png" +dest_files=["res://.godot/imported/player.png-1ad27fc2a62fa126eae918723933dd6f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/dynamic_tilemap_layers/player/player.tscn b/2d/layered_tile_maps/dynamic_tilemap_layers/player/player.tscn new file mode 100644 index 0000000..25320c7 --- /dev/null +++ b/2d/layered_tile_maps/dynamic_tilemap_layers/player/player.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://player/player.gd" type="Script" id=1] +[ext_resource path="res://player/player.png" type="Texture2D" id=2] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2(7, 7) + +[node name="Player" type="CharacterBody2D"] +script = ExtResource( 1 ) + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource( 2 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2(-0.315559, 0.157784) +shape = SubResource( 1 ) diff --git a/2d/layered_tile_maps/dynamic_tilemap_layers/project.godot b/2d/layered_tile_maps/dynamic_tilemap_layers/project.godot new file mode 100644 index 0000000..664d5c0 --- /dev/null +++ b/2d/layered_tile_maps/dynamic_tilemap_layers/project.godot @@ -0,0 +1,66 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="Dynamic TileMap Layers" +config/description="Example of how to make a kinematic character controller in 2D using +CharacterBody2D. The character moves around, is affected by moving +platforms, can jump through one-way collision platforms, etc." +run/main_scene="res://world.tscn" +config/features=PackedStringArray("4.2") +config/icon="res://icon.png" + +[display] + +window/size/viewport_width=530 +window/size/viewport_height=495 +window/stretch/mode="canvas_items" +window/stretch/aspect="expand" + +[input] + +jump={ +"deadzone": 0.5, +"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} +move_left={ +"deadzone": 0.5, +"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} +move_right={ +"deadzone": 0.5, +"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} + +[physics] + +common/physics_ticks_per_second=120 +2d/default_gravity=500 + +[rendering] + +renderer/rendering_method="gl_compatibility" +environment/defaults/default_clear_color=Color(0.156863, 0.133333, 0.25098, 1) +anti_aliasing/quality/msaa_2d=2 diff --git a/2d/layered_tile_maps/dynamic_tilemap_layers/screenshots/.gdignore b/2d/layered_tile_maps/dynamic_tilemap_layers/screenshots/.gdignore new file mode 100644 index 0000000..e69de29 diff --git a/2d/layered_tile_maps/dynamic_tilemap_layers/screenshots/fake_wall.png b/2d/layered_tile_maps/dynamic_tilemap_layers/screenshots/fake_wall.png new file mode 100644 index 0000000..38ce07c Binary files /dev/null and b/2d/layered_tile_maps/dynamic_tilemap_layers/screenshots/fake_wall.png differ diff --git a/2d/layered_tile_maps/dynamic_tilemap_layers/world.tscn b/2d/layered_tile_maps/dynamic_tilemap_layers/world.tscn new file mode 100644 index 0000000..c9139ad --- /dev/null +++ b/2d/layered_tile_maps/dynamic_tilemap_layers/world.tscn @@ -0,0 +1,57 @@ +[gd_scene load_steps=8 format=3 uid="uid://de7qapkqfycxl"] + +[ext_resource type="Texture2D" uid="uid://cs8h2qyuakmko" path="res://level/obstacle.png" id="2"] +[ext_resource type="Script" path="res://level/tile_map.gd" id="2_q8fhk"] +[ext_resource type="PackedScene" path="res://player/player.tscn" id="3"] + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_on5ov"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_vnjib"] +texture = ExtResource("2") +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +1:0/0 = 0 +1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +1:0/0/physics_layer_0/angular_velocity = 0.0 + +[sub_resource type="TileSet" id="TileSet_xqlka"] +physics_layer_0/collision_layer = 1 +physics_layer_0/physics_material = SubResource("PhysicsMaterial_on5ov") +sources/0 = SubResource("TileSetAtlasSource_vnjib") + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_a2gec"] +size = Vector2(112, 48) + +[node name="World" type="Node2D"] + +[node name="TileMap" type="TileMap" parent="."] +z_index = 1 +tile_set = SubResource("TileSet_xqlka") +format = 2 +layer_0/name = "Ground" +layer_0/tile_data = PackedInt32Array(0, 0, 0, 65536, 0, 0, 131072, 0, 0, 196608, 0, 0, 262144, 0, 0, 327680, 0, 0, 393216, 0, 0, 458752, 0, 0, 524288, 0, 0, 589824, 0, 0, 655360, 0, 0, 720896, 0, 0, 786432, 0, 0, 851968, 0, 0, 917504, 0, 0, 983040, 0, 0, 1048576, 0, 0, 1114112, 0, 0, 1179648, 0, 0, 1245184, 0, 0, 1310720, 0, 0, 1376256, 0, 0, 1441792, 0, 0, 1507328, 0, 0, 1572864, 0, 0, 1638400, 0, 0, 1703936, 0, 0, 1769472, 0, 0, 1835008, 0, 0, 1900544, 0, 0, 1966080, 0, 0, 1, 0, 0, 65537, 0, 0, 131073, 0, 0, 196609, 0, 0, 262145, 0, 0, 327681, 0, 0, 393217, 0, 0, 458753, 0, 0, 524289, 0, 0, 589825, 0, 0, 655361, 0, 0, 720897, 0, 0, 786433, 0, 0, 851969, 0, 0, 917505, 0, 0, 983041, 0, 0, 1048577, 0, 0, 1114113, 0, 0, 1179649, 0, 0, 1245185, 0, 0, 1310721, 0, 0, 1376257, 0, 0, 1441793, 0, 0, 1507329, 0, 0, 1572865, 0, 0, 1638401, 0, 0, 1703937, 0, 0, 1769473, 0, 0, 1835009, 0, 0, 1900545, 0, 0, 1966081, 0, 0, 2, 0, 0, 65538, 0, 0, 1900546, 0, 0, 1966082, 0, 0, 3, 0, 0, 65539, 0, 0, 1900547, 0, 0, 1966083, 0, 0, 4, 0, 0, 65540, 0, 0, 1900548, 0, 0, 1966084, 0, 0, 5, 0, 0, 65541, 0, 0, 1900549, 0, 0, 1966085, 0, 0, 6, 0, 0, 65542, 0, 0, 1900550, 0, 0, 1966086, 0, 0, 7, 0, 0, 65543, 0, 0, 1900551, 0, 0, 1966087, 0, 0, 8, 0, 0, 65544, 0, 0, 1900552, 0, 0, 1966088, 0, 0, 9, 0, 0, 65545, 0, 0, 1900553, 0, 0, 1966089, 0, 0, 10, 0, 0, 65546, 0, 0, 1900554, 0, 0, 1966090, 0, 0, 11, 0, 0, 65547, 0, 0, 1900555, 0, 0, 1966091, 0, 0, 12, 0, 0, 65548, 0, 0, 1900556, 0, 0, 1966092, 0, 0, 13, 0, 0, 65549, 0, 0, 1900557, 0, 0, 1966093, 0, 0, 14, 0, 0, 65550, 0, 0, 1900558, 0, 0, 1966094, 0, 0, 15, 0, 0, 65551, 0, 0, 1900559, 0, 0, 1966095, 0, 0, 16, 0, 0, 65552, 0, 0, 1900560, 0, 0, 1966096, 0, 0, 17, 0, 0, 65553, 0, 0, 1900561, 0, 0, 1966097, 0, 0, 18, 0, 0, 65554, 0, 0, 1900562, 0, 0, 1966098, 0, 0, 19, 0, 0, 65555, 0, 0, 1900563, 0, 0, 1966099, 0, 0, 20, 0, 0, 65556, 0, 0, 1900564, 0, 0, 1966100, 0, 0, 21, 0, 0, 65557, 0, 0, 1900565, 0, 0, 1966101, 0, 0, 22, 0, 0, 65558, 0, 0, 1900566, 0, 0, 1966102, 0, 0, 23, 0, 0, 65559, 0, 0, 1900567, 0, 0, 1966103, 0, 0, 24, 0, 0, 65560, 0, 0, 1900568, 0, 0, 1966104, 0, 0, 25, 0, 0, 65561, 0, 0, 1900569, 0, 0, 1966105, 0, 0, 26, 0, 0, 65562, 0, 0, 1900570, 0, 0, 1966106, 0, 0, 27, 0, 0, 65563, 0, 0, 1900571, 0, 0, 1966107, 0, 0, 28, 0, 0, 65564, 0, 0, 1900572, 0, 0, 1966108, 0, 0, 29, 0, 0, 65565, 0, 0, 1900573, 0, 0, 1966109, 0, 0, 30, 0, 0, 65566, 0, 0, 1900574, 0, 0, 1966110, 0, 0, 31, 0, 0, 65567, 0, 0, 131103, 0, 0, 196639, 0, 0, 262175, 0, 0, 327711, 0, 0, 393247, 0, 0, 458783, 0, 0, 524319, 0, 0, 589855, 0, 0, 655391, 0, 0, 720927, 0, 0, 786463, 0, 0, 851999, 0, 0, 917535, 0, 0, 983071, 0, 0, 1048607, 0, 0, 1114143, 0, 0, 1179679, 0, 0, 1245215, 0, 0, 1310751, 0, 0, 1376287, 0, 0, 1441823, 0, 0, 1507359, 0, 0, 1572895, 0, 0, 1638431, 0, 0, 1703967, 0, 0, 1769503, 0, 0, 1835039, 0, 0, 1900575, 0, 0, 1966111, 0, 0, 32, 0, 0, 65568, 0, 0, 131104, 0, 0, 196640, 0, 0, 262176, 0, 0, 327712, 0, 0, 393248, 0, 0, 458784, 0, 0, 524320, 0, 0, 589856, 0, 0, 655392, 0, 0, 720928, 0, 0, 786464, 0, 0, 852000, 0, 0, 917536, 0, 0, 983072, 0, 0, 1048608, 0, 0, 1114144, 0, 0, 1179680, 0, 0, 1245216, 0, 0, 1310752, 0, 0, 1376288, 0, 0, 1441824, 0, 0, 1507360, 0, 0, 1572896, 0, 0, 1638432, 0, 0, 1703968, 0, 0, 1769504, 0, 0, 1835040, 0, 0, 1900576, 0, 0, 1966112, 0, 0, 1572878, 0, 0, 1572879, 0, 0, 1572880, 0, 0, 1572881, 0, 0, 1572882, 0, 0, 1572883, 0, 0, 1572884, 0, 0, 1507348, 0, 0, 1441812, 0, 0, 1441811, 0, 0, 1441810, 0, 0, 1441809, 0, 0, 1441808, 0, 0, 1441807, 0, 0, 1441806, 0, 0, 1507342, 0, 0, 1507343, 0, 0, 1507344, 0, 0, 1507345, 0, 0, 1507346, 0, 0, 1507347, 0, 0, 1638414, 0, 0, 1638415, 0, 0, 1638416, 0, 0, 1638417, 0, 0, 1638418, 0, 0, 1638419, 0, 0, 1638420, 0, 0) +layer_1/name = "Secret" +layer_1/enabled = true +layer_1/modulate = Color(1, 1, 1, 1) +layer_1/y_sort_enabled = false +layer_1/y_sort_origin = 0 +layer_1/z_index = 0 +layer_1/tile_data = PackedInt32Array(1703950, 0, 0, 1769486, 0, 0, 1835022, 0, 0, 1703951, 0, 0, 1769487, 0, 0, 1835023, 0, 0, 1703952, 0, 0, 1769488, 0, 0, 1835024, 0, 0, 1703953, 0, 0, 1769489, 0, 0, 1835025, 0, 0, 1703954, 0, 0, 1769490, 0, 0, 1835026, 0, 0, 1703955, 0, 0, 1769491, 0, 0, 1835027, 0, 0, 1703956, 0, 0, 1769492, 0, 0, 1835028, 0, 0) +script = ExtResource("2_q8fhk") + +[node name="Camera2D" type="Camera2D" parent="."] +offset = Vector2(265, 247) + +[node name="Player" parent="." instance=ExtResource("3")] +position = Vector2(120, 456) + +[node name="SecretDetector" type="Area2D" parent="."] +position = Vector2(280, 440) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="SecretDetector"] +shape = SubResource("RectangleShape2D_a2gec") + +[connection signal="body_entered" from="SecretDetector" to="TileMap" method="_on_secret_detector_body_entered"] +[connection signal="body_exited" from="SecretDetector" to="TileMap" method="_on_secret_detector_body_exited"] diff --git a/2d/layered_tile_maps/hexagonal_map/README.md b/2d/layered_tile_maps/hexagonal_map/README.md new file mode 100644 index 0000000..02601b1 --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/README.md @@ -0,0 +1,13 @@ +# Hexagonal Game + +Very simple demo showing a hexagonal TileMap and TileSet. + +Language: GDScript + +Renderer: GLES 2 + +Check out this demo on the asset library: https://godotengine.org/asset-library/asset/111 + +## Screenshots + +![Screenshot](screenshots/hex.png) diff --git a/2d/layered_tile_maps/hexagonal_map/icon.webp b/2d/layered_tile_maps/hexagonal_map/icon.webp new file mode 100644 index 0000000..fac317f Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/icon.webp differ diff --git a/2d/layered_tile_maps/hexagonal_map/icon.webp.import b/2d/layered_tile_maps/hexagonal_map/icon.webp.import new file mode 100644 index 0000000..cc29159 --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/icon.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://brwp8bimc75uu" +path="res://.godot/imported/icon.webp-e94f9a68b0f625a567a797079e4d325f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.webp" +dest_files=["res://.godot/imported/icon.webp-e94f9a68b0f625a567a797079e4d325f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/map.tscn b/2d/layered_tile_maps/hexagonal_map/map.tscn new file mode 100644 index 0000000..4a1af56 --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/map.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=3 format=3 uid="uid://bdlxxdkhge6fx"] + +[ext_resource type="TileSet" uid="uid://cdqwqnhu3t3wq" path="res://tileset.tres" id="1"] +[ext_resource type="PackedScene" uid="uid://bryfdf2r0lvau" path="res://troll.tscn" id="2"] + +[node name="Map" type="Node2D"] + +[node name="TileMap" type="TileMap" parent="."] +tile_set = ExtResource("1") +format = 2 +layer_0/tile_data = PackedInt32Array(-458747, 0, 0, -458746, 0, 0, -393212, 0, 0, -393211, 0, 0, -393210, 0, 0, -393209, 0, 0, -393208, 0, 0, -393207, 0, 0, -327678, 0, 0, -327677, 0, 0, -327676, 0, 0, -327675, 6, 0, -327674, 6, 0, -327673, 6, 0, -327672, 6, 0, -327671, 0, 0, -327670, 0, 0, -327669, 0, 0, -262142, 0, 0, -262141, 0, 0, -262140, 6, 0, -262139, 6, 0, -262138, 6, 0, -262137, 6, 0, -262136, 6, 0, -262135, 0, 0, -262134, 0, 0, -262133, 0, 0, -262132, 0, 0, -262131, 0, 0, -196606, 0, 0, -196605, 0, 0, -196604, 6, 0, -196603, 6, 0, -196602, 6, 0, -196601, 6, 0, -196600, 1, 0, -196599, 0, 0, -196598, 1, 0, -196597, 1, 0, -196596, 0, 0, -196595, 0, 0, -196594, 0, 0, -131071, 9, 0, -131070, 0, 0, -131069, 0, 0, -131068, 2, 0, -131067, 2, 0, -131066, 0, 0, -131065, 21, 0, -131064, 19, 0, -131063, 0, 0, -131062, 0, 0, -131061, 16, 0, -131060, 0, 0, -131059, 0, 0, -131058, 0, 0, -131057, 0, 0, -131056, 0, 0, -65534, 0, 0, -65533, 1, 0, -65532, 0, 0, -65531, 0, 0, -65530, 20, 0, -65529, 19, 0, -65528, 2, 0, -65527, 0, 0, -65526, 14, 0, -65525, 0, 0, -65524, 0, 0, -65523, 0, 0, -65522, 23, 0, -65521, 0, 0, -65520, 0, 0, -65519, 0, 0, 3, 1, 0, 4, 2, 0, 5, 0, 0, 6, 1, 0, 7, 1, 0, 8, 0, 0, 9, 10, 0, 10, 12, 0, 11, 0, 0, 12, 0, 0, 13, 8, 0, 14, 0, 0, 15, 0, 0, 16, 0, 0, 17, 0, 0, 65538, 0, 0, 65539, 0, 0, 65540, 2, 0, 65541, 0, 0, 65542, 1, 0, 65543, 15, 0, 65544, 0, 0, 65545, 0, 0, 65546, 0, 0, 65547, 0, 0, 65548, 0, 0, 65549, 25, 0, 65550, 8, 0, 65551, 0, 0, 65552, 21, 0, 65553, 0, 0, 131074, 0, 0, 131075, 1, 0, 131076, 0, 0, 131077, 1, 0, 131078, 0, 0, 131079, 0, 0, 131080, 0, 0, 131081, 5, 0, 131082, 0, 0, 131083, 0, 0, 131084, 0, 0, 131085, 0, 0, 131086, 0, 0, 131087, 0, 0, 131088, 0, 0, 131089, 0, 0, 196610, 0, 0, 196611, 0, 0, 196612, 0, 0, 196613, 23, 0, 196614, 0, 0, 196615, 0, 0, 196616, 0, 0, 196617, 5, 0, 196618, 5, 0, 196619, 0, 0, 196620, 0, 0, 196621, 0, 0, 196622, 0, 0, 196623, 23, 0, 196624, 0, 0, 262148, 0, 0, 262149, 0, 0, 262150, 0, 0, 262151, 0, 0, 262152, 8, 0, 262153, 5, 0, 262154, 5, 0, 262155, 0, 0, 262156, 0, 0, 262157, 21, 0, 262158, 0, 0, 262159, 0, 0, 262160, 0, 0, 327686, 0, 0, 327687, 0, 0, 327688, 0, 0, 327689, 0, 0, 327690, 0, 0, 327691, 0, 0, 327692, 0, 0, 327693, 0, 0, 327694, 0, 0) + +[node name="Troll" parent="." instance=ExtResource("2")] +position = Vector2(602.819, -39.2876) diff --git a/2d/layered_tile_maps/hexagonal_map/project.godot b/2d/layered_tile_maps/hexagonal_map/project.godot new file mode 100644 index 0000000..172ce2b --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/project.godot @@ -0,0 +1,66 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="Hexagonal Game" +config/description="Very simple demo showing a hexagonal TileMap and TileSet." +config/tags=PackedStringArray("2d", "demo", "official", "tilemap") +run/main_scene="res://map.tscn" +config/features=PackedStringArray("4.2") +config/icon="res://icon.webp" + +[display] + +window/stretch/mode="canvas_items" +window/stretch/aspect="expand" + +[input] + +move_down={ +"deadzone": 0.5, +"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} +move_left={ +"deadzone": 0.5, +"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} +move_right={ +"deadzone": 0.5, +"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} +move_up={ +"deadzone": 0.5, +"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} + +[physics] + +common/physics_ticks_per_second=120 + +[rendering] + +environment/defaults/default_clear_color=Color(0.106667, 0.2, 0.1, 1) diff --git a/2d/layered_tile_maps/hexagonal_map/screenshots/.gdignore b/2d/layered_tile_maps/hexagonal_map/screenshots/.gdignore new file mode 100644 index 0000000..e69de29 diff --git a/2d/layered_tile_maps/hexagonal_map/screenshots/hex.png b/2d/layered_tile_maps/hexagonal_map/screenshots/hex.png new file mode 100644 index 0000000..1f2e932 Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/screenshots/hex.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-01.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-01.png new file mode 100644 index 0000000..74f9ac0 Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-01.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-01.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-01.png.import new file mode 100644 index 0000000..155fc5b --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-01.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://crqmfvmjk10qv" +path="res://.godot/imported/WWT-01.png-a74af26d994adfc547572b5b9c0c4034.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-01.png" +dest_files=["res://.godot/imported/WWT-01.png-a74af26d994adfc547572b5b9c0c4034.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-02.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-02.png new file mode 100644 index 0000000..bbd992d Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-02.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-02.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-02.png.import new file mode 100644 index 0000000..1b4d4d2 --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-02.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cedbg617ddc06" +path="res://.godot/imported/WWT-02.png-9a9ae8a623554db2531366e8a06b737a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-02.png" +dest_files=["res://.godot/imported/WWT-02.png-9a9ae8a623554db2531366e8a06b737a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-03.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-03.png new file mode 100644 index 0000000..7beba3d Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-03.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-03.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-03.png.import new file mode 100644 index 0000000..7c3d64a --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-03.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cmth7tlqu7i5b" +path="res://.godot/imported/WWT-03.png-111a68b27c5234ed5719f8591af32a0c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-03.png" +dest_files=["res://.godot/imported/WWT-03.png-111a68b27c5234ed5719f8591af32a0c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-04.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-04.png new file mode 100644 index 0000000..106884d Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-04.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-04.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-04.png.import new file mode 100644 index 0000000..62497f1 --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-04.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cnap3w3iv55k6" +path="res://.godot/imported/WWT-04.png-f26081179f39965c61294d932b10ab21.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-04.png" +dest_files=["res://.godot/imported/WWT-04.png-f26081179f39965c61294d932b10ab21.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-05.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-05.png new file mode 100644 index 0000000..3cfbbed Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-05.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-05.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-05.png.import new file mode 100644 index 0000000..002a01a --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-05.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b2l65q8a3gdh4" +path="res://.godot/imported/WWT-05.png-744e3aac04e57d14153c9ab15d0f478b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-05.png" +dest_files=["res://.godot/imported/WWT-05.png-744e3aac04e57d14153c9ab15d0f478b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-06.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-06.png new file mode 100644 index 0000000..1e2a746 Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-06.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-06.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-06.png.import new file mode 100644 index 0000000..5e9602b --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-06.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dw1k6i44aj0x6" +path="res://.godot/imported/WWT-06.png-42fd05901daa928f55c39f581f1c698b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-06.png" +dest_files=["res://.godot/imported/WWT-06.png-42fd05901daa928f55c39f581f1c698b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-07.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-07.png new file mode 100644 index 0000000..34b98e4 Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-07.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-07.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-07.png.import new file mode 100644 index 0000000..618a306 --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-07.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c5fggtsfk75xa" +path="res://.godot/imported/WWT-07.png-8e87a5146f132f36aecf29c26d16ff69.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-07.png" +dest_files=["res://.godot/imported/WWT-07.png-8e87a5146f132f36aecf29c26d16ff69.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-08.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-08.png new file mode 100644 index 0000000..8b1fd6e Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-08.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-08.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-08.png.import new file mode 100644 index 0000000..cc8eee0 --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-08.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://wqigqjsj3avp" +path="res://.godot/imported/WWT-08.png-9ab3b0ed6304c6b282e0c1c2866f4c65.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-08.png" +dest_files=["res://.godot/imported/WWT-08.png-9ab3b0ed6304c6b282e0c1c2866f4c65.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-09.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-09.png new file mode 100644 index 0000000..2ae5537 Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-09.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-09.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-09.png.import new file mode 100644 index 0000000..6ea8e2f --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-09.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c6hs85g3cl0sq" +path="res://.godot/imported/WWT-09.png-c899d1db7b10c4bc6e5c8ad44627c439.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-09.png" +dest_files=["res://.godot/imported/WWT-09.png-c899d1db7b10c4bc6e5c8ad44627c439.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-10.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-10.png new file mode 100644 index 0000000..90a4102 Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-10.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-10.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-10.png.import new file mode 100644 index 0000000..ea61342 --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-10.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bpo0pq1q0f27b" +path="res://.godot/imported/WWT-10.png-c7e17e1ca741da0752bae015501fa73f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-10.png" +dest_files=["res://.godot/imported/WWT-10.png-c7e17e1ca741da0752bae015501fa73f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-11.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-11.png new file mode 100644 index 0000000..5cbb758 Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-11.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-11.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-11.png.import new file mode 100644 index 0000000..34cde0f --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-11.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cbuym3gkbc32a" +path="res://.godot/imported/WWT-11.png-109af6474e89a87a4598cb99f608a4f7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-11.png" +dest_files=["res://.godot/imported/WWT-11.png-109af6474e89a87a4598cb99f608a4f7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-12.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-12.png new file mode 100644 index 0000000..207d085 Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-12.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-12.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-12.png.import new file mode 100644 index 0000000..8ae65e1 --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-12.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dyhvpxrxlip5v" +path="res://.godot/imported/WWT-12.png-dfbf3da77ce636a3e88f9e62405a950b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-12.png" +dest_files=["res://.godot/imported/WWT-12.png-dfbf3da77ce636a3e88f9e62405a950b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-13.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-13.png new file mode 100644 index 0000000..58df137 Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-13.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-13.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-13.png.import new file mode 100644 index 0000000..54b2d05 --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-13.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cf37ho773vwp2" +path="res://.godot/imported/WWT-13.png-cef8d6fe42386e917ad3aa9b9c54f031.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-13.png" +dest_files=["res://.godot/imported/WWT-13.png-cef8d6fe42386e917ad3aa9b9c54f031.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-14.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-14.png new file mode 100644 index 0000000..9fd0fb3 Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-14.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-14.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-14.png.import new file mode 100644 index 0000000..cb25198 --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-14.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bxai3ekb6emcv" +path="res://.godot/imported/WWT-14.png-b9075987807eba6a461b896e310a1b8a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-14.png" +dest_files=["res://.godot/imported/WWT-14.png-b9075987807eba6a461b896e310a1b8a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-15.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-15.png new file mode 100644 index 0000000..9f1986e Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-15.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-15.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-15.png.import new file mode 100644 index 0000000..2ef5a3e --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-15.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cqd2c2wh20qie" +path="res://.godot/imported/WWT-15.png-00500699e949fc7109f5946f459a9877.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-15.png" +dest_files=["res://.godot/imported/WWT-15.png-00500699e949fc7109f5946f459a9877.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-16.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-16.png new file mode 100644 index 0000000..446a156 Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-16.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-16.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-16.png.import new file mode 100644 index 0000000..5758f83 --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-16.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://1hkvgty64oul" +path="res://.godot/imported/WWT-16.png-fbcd640a627612e528382718aecef7c7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-16.png" +dest_files=["res://.godot/imported/WWT-16.png-fbcd640a627612e528382718aecef7c7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-17.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-17.png new file mode 100644 index 0000000..d26a765 Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-17.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-17.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-17.png.import new file mode 100644 index 0000000..e706989 --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-17.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://1iq2swd8y0kw" +path="res://.godot/imported/WWT-17.png-eb18073021ced526bfb8971a84830c46.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-17.png" +dest_files=["res://.godot/imported/WWT-17.png-eb18073021ced526bfb8971a84830c46.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-18.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-18.png new file mode 100644 index 0000000..0da27f5 Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-18.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-18.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-18.png.import new file mode 100644 index 0000000..671fa4b --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-18.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cyoanntk2j1r5" +path="res://.godot/imported/WWT-18.png-82273bf41643f8f544a05cdc2226c3b8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-18.png" +dest_files=["res://.godot/imported/WWT-18.png-82273bf41643f8f544a05cdc2226c3b8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-19.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-19.png new file mode 100644 index 0000000..150e4c2 Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-19.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-19.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-19.png.import new file mode 100644 index 0000000..a427cce --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-19.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ceg6p4pycxma4" +path="res://.godot/imported/WWT-19.png-5894de00e931e36aaec31583c3ddce5c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-19.png" +dest_files=["res://.godot/imported/WWT-19.png-5894de00e931e36aaec31583c3ddce5c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-20.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-20.png new file mode 100644 index 0000000..94b83e8 Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-20.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-20.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-20.png.import new file mode 100644 index 0000000..fa5d323 --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-20.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://chb3m0ywas0um" +path="res://.godot/imported/WWT-20.png-88080834968c597a14e2fa47d72452ca.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-20.png" +dest_files=["res://.godot/imported/WWT-20.png-88080834968c597a14e2fa47d72452ca.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-21.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-21.png new file mode 100644 index 0000000..2dd5524 Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-21.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-21.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-21.png.import new file mode 100644 index 0000000..f9b94a1 --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-21.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c5uttqfeps4db" +path="res://.godot/imported/WWT-21.png-390238468871139dc33ef039ad919c91.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-21.png" +dest_files=["res://.godot/imported/WWT-21.png-390238468871139dc33ef039ad919c91.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-22.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-22.png new file mode 100644 index 0000000..6ba3339 Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-22.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-22.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-22.png.import new file mode 100644 index 0000000..f361d9e --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-22.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://desylm4omaicl" +path="res://.godot/imported/WWT-22.png-61b6f2ffc488560cd737af0df3a2aff4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-22.png" +dest_files=["res://.godot/imported/WWT-22.png-61b6f2ffc488560cd737af0df3a2aff4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-23.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-23.png new file mode 100644 index 0000000..ec66f59 Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-23.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-23.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-23.png.import new file mode 100644 index 0000000..b170482 --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-23.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c1124u4mauyoa" +path="res://.godot/imported/WWT-23.png-67ddb05725964560ee768025fb1ace6c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-23.png" +dest_files=["res://.godot/imported/WWT-23.png-67ddb05725964560ee768025fb1ace6c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-24.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-24.png new file mode 100644 index 0000000..4c76246 Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-24.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-24.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-24.png.import new file mode 100644 index 0000000..3330a71 --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-24.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bi8qsd7i1aahf" +path="res://.godot/imported/WWT-24.png-f708ede817cd745747bd03a5050d20d7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-24.png" +dest_files=["res://.godot/imported/WWT-24.png-f708ede817cd745747bd03a5050d20d7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-25.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-25.png new file mode 100644 index 0000000..66fa7a7 Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-25.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-25.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-25.png.import new file mode 100644 index 0000000..9d816b5 --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-25.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c0ujnkfiof2c7" +path="res://.godot/imported/WWT-25.png-8d42552ab8c27a7d4782e3da8de397f1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-25.png" +dest_files=["res://.godot/imported/WWT-25.png-8d42552ab8c27a7d4782e3da8de397f1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-26.png b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-26.png new file mode 100644 index 0000000..c276a4f Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-26.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/tiles/WWT-26.png.import b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-26.png.import new file mode 100644 index 0000000..85458fc --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tiles/WWT-26.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://nqj5fdvt56ad" +path="res://.godot/imported/WWT-26.png-317f2102fb6abd09801389544f53c0e1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/WWT-26.png" +dest_files=["res://.godot/imported/WWT-26.png-317f2102fb6abd09801389544f53c0e1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/tileset.tres b/2d/layered_tile_maps/hexagonal_map/tileset.tres new file mode 100644 index 0000000..2108fd3 --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tileset.tres @@ -0,0 +1,709 @@ +[gd_resource type="TileSet" load_steps=53 format=3 uid="uid://cdqwqnhu3t3wq"] + +[ext_resource type="Texture2D" uid="uid://crqmfvmjk10qv" path="res://tiles/WWT-01.png" id="1"] +[ext_resource type="Texture2D" uid="uid://cedbg617ddc06" path="res://tiles/WWT-02.png" id="2"] +[ext_resource type="Texture2D" uid="uid://cbuym3gkbc32a" path="res://tiles/WWT-11.png" id="3"] +[ext_resource type="Texture2D" uid="uid://dyhvpxrxlip5v" path="res://tiles/WWT-12.png" id="4"] +[ext_resource type="Texture2D" uid="uid://cf37ho773vwp2" path="res://tiles/WWT-13.png" id="5"] +[ext_resource type="Texture2D" uid="uid://bxai3ekb6emcv" path="res://tiles/WWT-14.png" id="6"] +[ext_resource type="Texture2D" uid="uid://cqd2c2wh20qie" path="res://tiles/WWT-15.png" id="7"] +[ext_resource type="Texture2D" uid="uid://1hkvgty64oul" path="res://tiles/WWT-16.png" id="8"] +[ext_resource type="Texture2D" uid="uid://1iq2swd8y0kw" path="res://tiles/WWT-17.png" id="9"] +[ext_resource type="Texture2D" uid="uid://cyoanntk2j1r5" path="res://tiles/WWT-18.png" id="10"] +[ext_resource type="Texture2D" uid="uid://ceg6p4pycxma4" path="res://tiles/WWT-19.png" id="11"] +[ext_resource type="Texture2D" uid="uid://chb3m0ywas0um" path="res://tiles/WWT-20.png" id="12"] +[ext_resource type="Texture2D" uid="uid://cmth7tlqu7i5b" path="res://tiles/WWT-03.png" id="13"] +[ext_resource type="Texture2D" uid="uid://c5uttqfeps4db" path="res://tiles/WWT-21.png" id="14"] +[ext_resource type="Texture2D" uid="uid://desylm4omaicl" path="res://tiles/WWT-22.png" id="15"] +[ext_resource type="Texture2D" uid="uid://c1124u4mauyoa" path="res://tiles/WWT-23.png" id="16"] +[ext_resource type="Texture2D" uid="uid://bi8qsd7i1aahf" path="res://tiles/WWT-24.png" id="17"] +[ext_resource type="Texture2D" uid="uid://c0ujnkfiof2c7" path="res://tiles/WWT-25.png" id="18"] +[ext_resource type="Texture2D" uid="uid://nqj5fdvt56ad" path="res://tiles/WWT-26.png" id="19"] +[ext_resource type="Texture2D" uid="uid://cnap3w3iv55k6" path="res://tiles/WWT-04.png" id="20"] +[ext_resource type="Texture2D" uid="uid://b2l65q8a3gdh4" path="res://tiles/WWT-05.png" id="21"] +[ext_resource type="Texture2D" uid="uid://dw1k6i44aj0x6" path="res://tiles/WWT-06.png" id="22"] +[ext_resource type="Texture2D" uid="uid://c5fggtsfk75xa" path="res://tiles/WWT-07.png" id="23"] +[ext_resource type="Texture2D" uid="uid://wqigqjsj3avp" path="res://tiles/WWT-08.png" id="24"] +[ext_resource type="Texture2D" uid="uid://c6hs85g3cl0sq" path="res://tiles/WWT-09.png" id="25"] +[ext_resource type="Texture2D" uid="uid://bpo0pq1q0f27b" path="res://tiles/WWT-10.png" id="26"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_oh287"] +texture = ExtResource("1") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_bmxdu"] +texture = ExtResource("2") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_u8sk8"] +texture = ExtResource("3") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_dtlkn"] +texture = ExtResource("4") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_k6l3k"] +texture = ExtResource("5") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_yird3"] +texture = ExtResource("6") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_2rlgx"] +texture = ExtResource("7") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_4vyst"] +texture = ExtResource("8") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_hte4l"] +texture = ExtResource("9") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_1o5vu"] +texture = ExtResource("10") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_qxvr3"] +texture = ExtResource("11") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_w48kd"] +texture = ExtResource("12") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_c2r56"] +texture = ExtResource("13") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_ppq3m"] +texture = ExtResource("14") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_2nvyk"] +texture = ExtResource("15") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_rfmnc"] +texture = ExtResource("16") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_25mrk"] +texture = ExtResource("17") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_3l4iw"] +texture = ExtResource("18") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_jm5h0"] +texture = ExtResource("19") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_88jh5"] +texture = ExtResource("20") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_hfv7b"] +texture = ExtResource("21") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_xix30"] +texture = ExtResource("22") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_svdm5"] +texture = ExtResource("23") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_xg1yk"] +texture = ExtResource("24") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_rjq70"] +texture = ExtResource("25") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_fpx8o"] +texture = ExtResource("26") +texture_region_size = Vector2i(128, 128) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true + +[resource] +tile_shape = 3 +tile_offset_axis = 1 +tile_size = Vector2i(110, 94) +sources/0 = SubResource("TileSetAtlasSource_oh287") +sources/1 = SubResource("TileSetAtlasSource_bmxdu") +sources/2 = SubResource("TileSetAtlasSource_c2r56") +sources/3 = SubResource("TileSetAtlasSource_88jh5") +sources/4 = SubResource("TileSetAtlasSource_hfv7b") +sources/5 = SubResource("TileSetAtlasSource_xix30") +sources/6 = SubResource("TileSetAtlasSource_svdm5") +sources/7 = SubResource("TileSetAtlasSource_xg1yk") +sources/8 = SubResource("TileSetAtlasSource_rjq70") +sources/9 = SubResource("TileSetAtlasSource_fpx8o") +sources/10 = SubResource("TileSetAtlasSource_u8sk8") +sources/11 = SubResource("TileSetAtlasSource_dtlkn") +sources/12 = SubResource("TileSetAtlasSource_k6l3k") +sources/13 = SubResource("TileSetAtlasSource_yird3") +sources/14 = SubResource("TileSetAtlasSource_2rlgx") +sources/15 = SubResource("TileSetAtlasSource_4vyst") +sources/16 = SubResource("TileSetAtlasSource_hte4l") +sources/17 = SubResource("TileSetAtlasSource_1o5vu") +sources/18 = SubResource("TileSetAtlasSource_qxvr3") +sources/19 = SubResource("TileSetAtlasSource_w48kd") +sources/20 = SubResource("TileSetAtlasSource_ppq3m") +sources/21 = SubResource("TileSetAtlasSource_2nvyk") +sources/22 = SubResource("TileSetAtlasSource_rfmnc") +sources/23 = SubResource("TileSetAtlasSource_25mrk") +sources/24 = SubResource("TileSetAtlasSource_3l4iw") +sources/25 = SubResource("TileSetAtlasSource_jm5h0") diff --git a/2d/layered_tile_maps/hexagonal_map/tileset_edit.tscn b/2d/layered_tile_maps/hexagonal_map/tileset_edit.tscn new file mode 100644 index 0000000..06d352e --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/tileset_edit.tscn @@ -0,0 +1,159 @@ +[gd_scene load_steps=27 format=2] + +[ext_resource path="res://tiles/WWT-01.png" type="Texture2D" id=1] +[ext_resource path="res://tiles/WWT-02.png" type="Texture2D" id=2] +[ext_resource path="res://tiles/WWT-03.png" type="Texture2D" id=3] +[ext_resource path="res://tiles/WWT-04.png" type="Texture2D" id=4] +[ext_resource path="res://tiles/WWT-05.png" type="Texture2D" id=5] +[ext_resource path="res://tiles/WWT-06.png" type="Texture2D" id=6] +[ext_resource path="res://tiles/WWT-07.png" type="Texture2D" id=7] +[ext_resource path="res://tiles/WWT-08.png" type="Texture2D" id=8] +[ext_resource path="res://tiles/WWT-09.png" type="Texture2D" id=9] +[ext_resource path="res://tiles/WWT-10.png" type="Texture2D" id=10] +[ext_resource path="res://tiles/WWT-11.png" type="Texture2D" id=11] +[ext_resource path="res://tiles/WWT-12.png" type="Texture2D" id=12] +[ext_resource path="res://tiles/WWT-13.png" type="Texture2D" id=13] +[ext_resource path="res://tiles/WWT-14.png" type="Texture2D" id=14] +[ext_resource path="res://tiles/WWT-15.png" type="Texture2D" id=15] +[ext_resource path="res://tiles/WWT-16.png" type="Texture2D" id=16] +[ext_resource path="res://tiles/WWT-17.png" type="Texture2D" id=17] +[ext_resource path="res://tiles/WWT-18.png" type="Texture2D" id=18] +[ext_resource path="res://tiles/WWT-19.png" type="Texture2D" id=19] +[ext_resource path="res://tiles/WWT-20.png" type="Texture2D" id=20] +[ext_resource path="res://tiles/WWT-21.png" type="Texture2D" id=21] +[ext_resource path="res://tiles/WWT-22.png" type="Texture2D" id=22] +[ext_resource path="res://tiles/WWT-23.png" type="Texture2D" id=23] +[ext_resource path="res://tiles/WWT-24.png" type="Texture2D" id=24] +[ext_resource path="res://tiles/WWT-25.png" type="Texture2D" id=25] +[ext_resource path="res://tiles/WWT-26.png" type="Texture2D" id=26] + +[node name="TilesetEdit" type="Node2D"] + +[node name="Tile1" type="Sprite2D" parent="."] +texture = ExtResource( 1 ) +centered = false + +[node name="Tile2" type="Sprite2D" parent="."] +position = Vector2(128, 0) +texture = ExtResource( 2 ) +centered = false + +[node name="Tile3" type="Sprite2D" parent="."] +position = Vector2(256, 0) +texture = ExtResource( 3 ) +centered = false + +[node name="Tile4" type="Sprite2D" parent="."] +position = Vector2(384, 0) +texture = ExtResource( 4 ) +centered = false + +[node name="Tile5" type="Sprite2D" parent="."] +position = Vector2(512, 0) +texture = ExtResource( 5 ) +centered = false + +[node name="Tile6" type="Sprite2D" parent="."] +position = Vector2(640, 0) +texture = ExtResource( 6 ) +centered = false + +[node name="Tile7" type="Sprite2D" parent="."] +position = Vector2(768, 0) +texture = ExtResource( 7 ) +centered = false + +[node name="Tile8" type="Sprite2D" parent="."] +position = Vector2(896, 0) +texture = ExtResource( 8 ) +centered = false + +[node name="Tile9" type="Sprite2D" parent="."] +position = Vector2(1024, 0) +texture = ExtResource( 9 ) +centered = false + +[node name="Tile10" type="Sprite2D" parent="."] +position = Vector2(0, 128) +texture = ExtResource( 10 ) +centered = false + +[node name="Tile11" type="Sprite2D" parent="."] +position = Vector2(128, 128) +texture = ExtResource( 11 ) +centered = false + +[node name="Tile12" type="Sprite2D" parent="."] +position = Vector2(256, 128) +texture = ExtResource( 12 ) +centered = false + +[node name="Tile13" type="Sprite2D" parent="."] +position = Vector2(384, 128) +texture = ExtResource( 13 ) +centered = false + +[node name="Tile14" type="Sprite2D" parent="."] +position = Vector2(512, 128) +texture = ExtResource( 14 ) +centered = false + +[node name="Tile15" type="Sprite2D" parent="."] +position = Vector2(640, 128) +texture = ExtResource( 15 ) +centered = false + +[node name="Tile16" type="Sprite2D" parent="."] +position = Vector2(768, 128) +texture = ExtResource( 16 ) +centered = false + +[node name="Tile17" type="Sprite2D" parent="."] +position = Vector2(896, 128) +texture = ExtResource( 17 ) +centered = false + +[node name="Tile18" type="Sprite2D" parent="."] +position = Vector2(1024, 128) +texture = ExtResource( 18 ) +centered = false + +[node name="Tile19" type="Sprite2D" parent="."] +position = Vector2(0, 256) +texture = ExtResource( 19 ) +centered = false + +[node name="Tile20" type="Sprite2D" parent="."] +position = Vector2(128, 256) +texture = ExtResource( 20 ) +centered = false + +[node name="Tile21" type="Sprite2D" parent="."] +position = Vector2(256, 256) +texture = ExtResource( 21 ) +centered = false + +[node name="Tile22" type="Sprite2D" parent="."] +position = Vector2(384, 256) +texture = ExtResource( 22 ) +centered = false + +[node name="Tile23" type="Sprite2D" parent="."] +position = Vector2(512, 256) +texture = ExtResource( 23 ) +centered = false + +[node name="Tile24" type="Sprite2D" parent="."] +position = Vector2(640, 256) +texture = ExtResource( 24 ) +centered = false + +[node name="Tile25" type="Sprite2D" parent="."] +position = Vector2(768, 256) +texture = ExtResource( 25 ) +centered = false + +[node name="Tile26" type="Sprite2D" parent="."] +position = Vector2(896, 256) +texture = ExtResource( 26 ) +centered = false diff --git a/2d/layered_tile_maps/hexagonal_map/troll.gd b/2d/layered_tile_maps/hexagonal_map/troll.gd new file mode 100644 index 0000000..4547c26 --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/troll.gd @@ -0,0 +1,16 @@ +extends CharacterBody2D + +const MOTION_SPEED = 30 +const FRICTION_FACTOR = 0.89 +const TAN30DEG = tan(deg_to_rad(30)) + +func _physics_process(_delta): + var motion = Vector2() + motion.x = Input.get_axis(&"move_left", &"move_right") + motion.y = Input.get_axis(&"move_up", &"move_down") + # Make diagonal movement fit for hexagonal tiles. + motion.y *= TAN30DEG + velocity += motion.normalized() * MOTION_SPEED + # Apply friction. + velocity *= FRICTION_FACTOR + move_and_slide() diff --git a/2d/layered_tile_maps/hexagonal_map/troll.png b/2d/layered_tile_maps/hexagonal_map/troll.png new file mode 100644 index 0000000..a0b5ae1 Binary files /dev/null and b/2d/layered_tile_maps/hexagonal_map/troll.png differ diff --git a/2d/layered_tile_maps/hexagonal_map/troll.png.import b/2d/layered_tile_maps/hexagonal_map/troll.png.import new file mode 100644 index 0000000..17030a4 --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/troll.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c125b0x0g8lwk" +path="res://.godot/imported/troll.png-78efc50bfccaa17f54d40cfea3eef5f5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://troll.png" +dest_files=["res://.godot/imported/troll.png-78efc50bfccaa17f54d40cfea3eef5f5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/hexagonal_map/troll.tscn b/2d/layered_tile_maps/hexagonal_map/troll.tscn new file mode 100644 index 0000000..9237755 --- /dev/null +++ b/2d/layered_tile_maps/hexagonal_map/troll.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=4 format=3 uid="uid://bryfdf2r0lvau"] + +[ext_resource type="Script" path="res://troll.gd" id="1"] +[ext_resource type="Texture2D" uid="uid://c125b0x0g8lwk" path="res://troll.png" id="2"] + +[sub_resource type="CircleShape2D" id="1"] +radius = 16.0 + +[node name="Troll" type="CharacterBody2D"] +script = ExtResource("1") + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource("2") + +[node name="Shadow" type="Sprite2D" parent="."] +modulate = Color(0, 0, 0, 0.501961) +show_behind_parent = true +position = Vector2(3, 3) +texture = ExtResource("2") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2(3.24216, 19.453) +shape = SubResource("1") + +[node name="Camera2D" type="Camera2D" parent="."] +current = true diff --git a/2d/layered_tile_maps/isometric/README.md b/2d/layered_tile_maps/isometric/README.md new file mode 100644 index 0000000..8c87ba5 --- /dev/null +++ b/2d/layered_tile_maps/isometric/README.md @@ -0,0 +1,30 @@ +# Isometric Game + +This demo shows a traditional isometric view with depth sorting. + +A character can move around the level and will also slide around objects, +as well as be occluded when standing in front or behind them. + +Language: GDScript + +Renderer: Compatibility + +Check out this demo on the asset library: https://godotengine.org/asset-library/asset/112 + +## How does it work? + +The level uses a [`TileMap`](https://docs.godotengine.org/en/latest/classes/class_tilemap.html#class-tilemap) +in which the tiles have different vertical offsets. +The walls, doors, and pillars each have +[`StaticBody2D`](https://docs.godotengine.org/en/latest/classes/class_staticbody2d.html) +and [`CollisionPolygon2D`](https://docs.godotengine.org/en/latest/classes/class_collisionpolygon2d.html) +at their base. The player also has a collider at its base, +which makes the player collide with the level. + +2D lighting effects are achieved using a mixture of PointLight2D nodes (which provide real-time shadows) +and pre-placed Polygon2Ds with sprites. To provide additional ambient shading, the goblin also has a blob +shadow below its feet (a Sprite2D with a texture). + +## Screenshots + +![Screenshot](screenshots/isometric.webp) diff --git a/2d/layered_tile_maps/isometric/decorations/banner.png b/2d/layered_tile_maps/isometric/decorations/banner.png new file mode 100644 index 0000000..f0c5aa1 Binary files /dev/null and b/2d/layered_tile_maps/isometric/decorations/banner.png differ diff --git a/2d/layered_tile_maps/isometric/decorations/banner.png.import b/2d/layered_tile_maps/isometric/decorations/banner.png.import new file mode 100644 index 0000000..ad2b031 --- /dev/null +++ b/2d/layered_tile_maps/isometric/decorations/banner.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bycat883fu7q2" +path="res://.godot/imported/banner.png-45264389ab2131df9b78c5ec3b246773.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://decorations/banner.png" +dest_files=["res://.godot/imported/banner.png-45264389ab2131df9b78c5ec3b246773.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/isometric/decorations/bone_pile_1.png b/2d/layered_tile_maps/isometric/decorations/bone_pile_1.png new file mode 100644 index 0000000..5963310 Binary files /dev/null and b/2d/layered_tile_maps/isometric/decorations/bone_pile_1.png differ diff --git a/2d/layered_tile_maps/isometric/decorations/bone_pile_1.png.import b/2d/layered_tile_maps/isometric/decorations/bone_pile_1.png.import new file mode 100644 index 0000000..f02cda6 --- /dev/null +++ b/2d/layered_tile_maps/isometric/decorations/bone_pile_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dpxv7d5d7hm33" +path="res://.godot/imported/bone_pile_1.png-72c582c4f31012bb8009120719983b0c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://decorations/bone_pile_1.png" +dest_files=["res://.godot/imported/bone_pile_1.png-72c582c4f31012bb8009120719983b0c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/isometric/decorations/bone_pile_1.tscn b/2d/layered_tile_maps/isometric/decorations/bone_pile_1.tscn new file mode 100644 index 0000000..8e80427 --- /dev/null +++ b/2d/layered_tile_maps/isometric/decorations/bone_pile_1.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://decorations/bone_pile_1.png" type="Texture2D" id=1] + +[sub_resource type="CapsuleShape2D" id=1] +radius = 18.0 +height = 28.0 + +[node name="bone_pile" type="Node2D"] + +[node name="StaticBody2D" type="StaticBody2D" parent="."] + +[node name="Sprite2D" type="Sprite2D" parent="StaticBody2D"] +position = Vector2( 0, -14 ) +texture = ExtResource( 1 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2( 0, -15 ) +rotation = 1.5708 +shape = SubResource( 1 ) diff --git a/2d/layered_tile_maps/isometric/decorations/bone_pile_2.png b/2d/layered_tile_maps/isometric/decorations/bone_pile_2.png new file mode 100644 index 0000000..67db440 Binary files /dev/null and b/2d/layered_tile_maps/isometric/decorations/bone_pile_2.png differ diff --git a/2d/layered_tile_maps/isometric/decorations/bone_pile_2.png.import b/2d/layered_tile_maps/isometric/decorations/bone_pile_2.png.import new file mode 100644 index 0000000..b380896 --- /dev/null +++ b/2d/layered_tile_maps/isometric/decorations/bone_pile_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://wxpdcei7yeuk" +path="res://.godot/imported/bone_pile_2.png-f448133711e0ebea56f9e49e956ac902.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://decorations/bone_pile_2.png" +dest_files=["res://.godot/imported/bone_pile_2.png-f448133711e0ebea56f9e49e956ac902.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/isometric/decorations/bone_pile_2.tscn b/2d/layered_tile_maps/isometric/decorations/bone_pile_2.tscn new file mode 100644 index 0000000..e6aa8e8 --- /dev/null +++ b/2d/layered_tile_maps/isometric/decorations/bone_pile_2.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://decorations/bone_pile_2.png" type="Texture2D" id=1] + +[sub_resource type="CapsuleShape2D" id=1] +radius = 13.0 +height = 26.0001 + +[node name="bone_pile" type="Node2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +position = Vector2( 0, -13 ) +texture = ExtResource( 1 ) + +[node name="StaticBody2D" type="StaticBody2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2( 0, -13 ) +rotation = 1.5708 +shape = SubResource( 1 ) diff --git a/2d/layered_tile_maps/isometric/decorations/candle.png b/2d/layered_tile_maps/isometric/decorations/candle.png new file mode 100644 index 0000000..0f31981 Binary files /dev/null and b/2d/layered_tile_maps/isometric/decorations/candle.png differ diff --git a/2d/layered_tile_maps/isometric/decorations/candle.png.import b/2d/layered_tile_maps/isometric/decorations/candle.png.import new file mode 100644 index 0000000..e94871e --- /dev/null +++ b/2d/layered_tile_maps/isometric/decorations/candle.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bkae3n748i0ow" +path="res://.godot/imported/candle.png-223de51ae9e8ec99121079382498836e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://decorations/candle.png" +dest_files=["res://.godot/imported/candle.png-223de51ae9e8ec99121079382498836e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/isometric/decorations/candle.tscn b/2d/layered_tile_maps/isometric/decorations/candle.tscn new file mode 100644 index 0000000..b596c2d --- /dev/null +++ b/2d/layered_tile_maps/isometric/decorations/candle.tscn @@ -0,0 +1,131 @@ +[gd_scene load_steps=14 format=2] + +[ext_resource path="res://decorations/sparkle.png" type="Texture2D" id=1] +[ext_resource path="res://decorations/candle.png" type="Texture2D" id=2] +[ext_resource path="res://decorations/fire.png" type="Texture2D" id=3] +[ext_resource path="res://decorations/glow.png" type="Texture2D" id=4] + +[sub_resource type="CanvasItemMaterial" id=1] +particles_animation = true +particles_anim_h_frames = 11 +particles_anim_v_frames = 1 +particles_anim_loop = false + +[sub_resource type="Gradient" id=2] +offsets = PackedFloat32Array( 0, 0.625698, 1 ) +colors = PackedColorArray( 1, 0.584314, 0, 1, 1, 0.84063, 0.226563, 1, 1, 0.584314, 0, 1 ) + +[sub_resource type="CanvasItemMaterial" id=3] +blend_mode = 1 +particles_animation = true +particles_anim_h_frames = 8 +particles_anim_v_frames = 1 +particles_anim_loop = false + +[sub_resource type="Curve" id=4] +max_value = 0.3 +_data = [ Vector2( 0, 0 ), 0.0, 1.36377, 0, 0, Vector2( 0.262376, 0.188182 ), 0.41974, 0.41974, 0, 0, Vector2( 1, 0.0295454 ), -1.06101, 0.0, 0, 0 ] + +[sub_resource type="Gradient" id=5] +offsets = PackedFloat32Array( 0, 0.435754, 1 ) +colors = PackedColorArray( 1, 0.351563, 0, 1, 0.895996, 0.745333, 0.230999, 1, 1, 0.426842, 0.0234375, 1 ) + +[sub_resource type="Gradient" id=12] +offsets = PackedFloat32Array( 0, 0.100559, 0.234637, 0.480447, 0.603352, 1 ) +colors = PackedColorArray( 0.714844, 0.714844, 0.714844, 1, 0.382813, 0.382813, 0.382813, 1, 0.601563, 0.601563, 0.601563, 1, 0.229687, 0.229687, 0.229687, 1, 0.0197581, 0.0197581, 0.0197581, 1, 0, 0, 0, 1 ) + +[sub_resource type="GradientTexture2D" id=9] +gradient = SubResource( 12 ) +width = 128 +height = 128 +fill = 1 +fill_from = Vector2( 0.5, 0.5 ) +fill_to = Vector2( 0, 0 ) + +[sub_resource type="Gradient" id=13] +offsets = PackedFloat32Array( 0.0111732, 0.843575 ) +colors = PackedColorArray( 0.648926, 0.648926, 0.648926, 1, 0, 0, 0, 1 ) + +[sub_resource type="GradientTexture2D" id=10] +gradient = SubResource( 13 ) +width = 800 +height = 500 +fill = 1 +fill_from = Vector2( 0.5, 0.5 ) + +[node name="Node2D" type="Node2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +light_mask = 128 +position = Vector2( 0, -11 ) +texture = ExtResource( 2 ) + +[node name="glow" type="CPUParticles2D" parent="Sprite2D"] +modulate = Color( 1, 0.360784, 0.113725, 1 ) +light_mask = 128 +position = Vector2( -13, -33.244 ) +scale = Vector2( 0.3, 0.5 ) +amount = 1 +lifetime = 0.8 +texture = ExtResource( 4 ) +gravity = Vector2( 0, 0 ) + +[node name="Fire" type="CPUParticles2D" parent="Sprite2D"] +light_mask = 128 +material = SubResource( 1 ) +position = Vector2( -13, -35 ) +scale = Vector2( 0.6, 0.6 ) +amount = 1 +lifetime = 0.8 +texture = ExtResource( 3 ) +gravity = Vector2( 0, 0 ) +color_ramp = SubResource( 2 ) +anim_speed = 1.0 + +[node name="Sparkle" type="CPUParticles2D" parent="Sprite2D"] +light_mask = 128 +material = SubResource( 3 ) +position = Vector2( -13, -35 ) +scale = Vector2( 0.6, 0.6 ) +amount = 3 +texture = ExtResource( 1 ) +emission_shape = 1 +emission_sphere_radius = 8.0 +gravity = Vector2( 0, -80 ) +angular_velocity = 1.0 +tangential_accel = 49.54 +scale_amount_curve = SubResource( 4 ) +color_ramp = SubResource( 5 ) +anim_speed = 1.0 + +[node name="flow front" type="CPUParticles2D" parent="Sprite2D"] +modulate = Color( 0.94902, 1, 0, 1 ) +light_mask = 128 +position = Vector2( -13, -28.689 ) +scale = Vector2( 0.25, 0.25 ) +amount = 1 +lifetime = 0.8 +texture = ExtResource( 4 ) +gravity = Vector2( 0, 0 ) + +[node name="Light2D2" type="PointLight2D" parent="."] +light_mask = 2 +position = Vector2( -15, -49 ) +texture = SubResource( 9 ) +color = Color( 1, 0.466667, 0.0352941, 1 ) +energy = 2.0 +range_height = 450.9 +range_item_cull_mask = 145 +shadow_buffer_size = 512 +shadow_gradient_length = 30.0 +shadow_item_cull_mask = 145 + +[node name="PointLight2D" type="PointLight2D" parent="."] +light_mask = 2 +texture = SubResource( 10 ) +color = Color( 0.709804, 0.388235, 0.313726, 1 ) +range_height = 901.9 +range_item_cull_mask = 17 +shadow_enabled = true +shadow_gradient_length = 20.0 +shadow_item_cull_mask = 17 diff --git a/2d/layered_tile_maps/isometric/decorations/coin_pile.png b/2d/layered_tile_maps/isometric/decorations/coin_pile.png new file mode 100644 index 0000000..3c47e55 Binary files /dev/null and b/2d/layered_tile_maps/isometric/decorations/coin_pile.png differ diff --git a/2d/layered_tile_maps/isometric/decorations/coin_pile.png.import b/2d/layered_tile_maps/isometric/decorations/coin_pile.png.import new file mode 100644 index 0000000..d80b7e2 --- /dev/null +++ b/2d/layered_tile_maps/isometric/decorations/coin_pile.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b6sjbdj350qkj" +path="res://.godot/imported/coin_pile.png-e6c4ef8bf22301fe805244aafb152afe.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://decorations/coin_pile.png" +dest_files=["res://.godot/imported/coin_pile.png-e6c4ef8bf22301fe805244aafb152afe.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/isometric/decorations/coin_pile.tscn b/2d/layered_tile_maps/isometric/decorations/coin_pile.tscn new file mode 100644 index 0000000..0a3e5e4 --- /dev/null +++ b/2d/layered_tile_maps/isometric/decorations/coin_pile.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://decorations/coin_pile.png" type="Texture2D" id=1] + +[sub_resource type="CapsuleShape2D" id=1] +radius = 12.0 +height = 38.0 + +[node name="coin_pile" type="Node2D"] + +[node name="StaticBody2D" type="StaticBody2D" parent="."] + +[node name="Sprite2D" type="Sprite2D" parent="StaticBody2D"] +position = Vector2( 0, -23 ) +texture = ExtResource( 1 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2( 0, -13 ) +rotation = 1.5708 +shape = SubResource( 1 ) diff --git a/2d/layered_tile_maps/isometric/decorations/crow_looking.png b/2d/layered_tile_maps/isometric/decorations/crow_looking.png new file mode 100644 index 0000000..654d899 Binary files /dev/null and b/2d/layered_tile_maps/isometric/decorations/crow_looking.png differ diff --git a/2d/layered_tile_maps/isometric/decorations/crow_looking.png.import b/2d/layered_tile_maps/isometric/decorations/crow_looking.png.import new file mode 100644 index 0000000..d40abe4 --- /dev/null +++ b/2d/layered_tile_maps/isometric/decorations/crow_looking.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dami7imxtk2iq" +path="res://.godot/imported/crow_looking.png-21ce662085fe50bb572e6cecb19ea02a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://decorations/crow_looking.png" +dest_files=["res://.godot/imported/crow_looking.png-21ce662085fe50bb572e6cecb19ea02a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/isometric/decorations/crow_sleep.png b/2d/layered_tile_maps/isometric/decorations/crow_sleep.png new file mode 100644 index 0000000..579de8a Binary files /dev/null and b/2d/layered_tile_maps/isometric/decorations/crow_sleep.png differ diff --git a/2d/layered_tile_maps/isometric/decorations/crow_sleep.png.import b/2d/layered_tile_maps/isometric/decorations/crow_sleep.png.import new file mode 100644 index 0000000..6d57a99 --- /dev/null +++ b/2d/layered_tile_maps/isometric/decorations/crow_sleep.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d3j0qnogdctw4" +path="res://.godot/imported/crow_sleep.png-8118ad8761e95d588250a6deae9ca9c0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://decorations/crow_sleep.png" +dest_files=["res://.godot/imported/crow_sleep.png-8118ad8761e95d588250a6deae9ca9c0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/isometric/decorations/drape_1.png b/2d/layered_tile_maps/isometric/decorations/drape_1.png new file mode 100644 index 0000000..3296cb1 Binary files /dev/null and b/2d/layered_tile_maps/isometric/decorations/drape_1.png differ diff --git a/2d/layered_tile_maps/isometric/decorations/drape_1.png.import b/2d/layered_tile_maps/isometric/decorations/drape_1.png.import new file mode 100644 index 0000000..0394d3f --- /dev/null +++ b/2d/layered_tile_maps/isometric/decorations/drape_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dahfdmuvra5we" +path="res://.godot/imported/drape_1.png-4cc207f7e61e16248cb4322ecca80e49.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://decorations/drape_1.png" +dest_files=["res://.godot/imported/drape_1.png-4cc207f7e61e16248cb4322ecca80e49.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/isometric/decorations/fire.png b/2d/layered_tile_maps/isometric/decorations/fire.png new file mode 100644 index 0000000..8e67f77 Binary files /dev/null and b/2d/layered_tile_maps/isometric/decorations/fire.png differ diff --git a/2d/layered_tile_maps/isometric/decorations/fire.png.import b/2d/layered_tile_maps/isometric/decorations/fire.png.import new file mode 100644 index 0000000..1fd4dfc --- /dev/null +++ b/2d/layered_tile_maps/isometric/decorations/fire.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bfa7cvk3m65n3" +path="res://.godot/imported/fire.png-3d46874d6317d8fad2d37ee8071d140d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://decorations/fire.png" +dest_files=["res://.godot/imported/fire.png-3d46874d6317d8fad2d37ee8071d140d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/isometric/decorations/glow.png b/2d/layered_tile_maps/isometric/decorations/glow.png new file mode 100644 index 0000000..061ec30 Binary files /dev/null and b/2d/layered_tile_maps/isometric/decorations/glow.png differ diff --git a/2d/layered_tile_maps/isometric/decorations/glow.png.import b/2d/layered_tile_maps/isometric/decorations/glow.png.import new file mode 100644 index 0000000..341d94c --- /dev/null +++ b/2d/layered_tile_maps/isometric/decorations/glow.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cginrtmcplrec" +path="res://.godot/imported/glow.png-412cb028114e1a11dcd8adb3e27078d4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://decorations/glow.png" +dest_files=["res://.godot/imported/glow.png-412cb028114e1a11dcd8adb3e27078d4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/isometric/decorations/internal_shadow.tscn b/2d/layered_tile_maps/isometric/decorations/internal_shadow.tscn new file mode 100644 index 0000000..2a46fa4 --- /dev/null +++ b/2d/layered_tile_maps/isometric/decorations/internal_shadow.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://decorations/shadow_gradient.png" type="Texture2D" id=1] + +[node name="InternalShadow" type="Polygon2D"] +color = Color( 0.0705882, 0.0705882, 0.266667, 0.85098 ) +texture = ExtResource( 1 ) +polygon = PackedVector2Array( -92, -289, -94, 1, 128, -1, 121, -295 ) +uv = PackedVector2Array( -2, -1, -2, 292, 264, 291, 261, -2 ) diff --git a/2d/layered_tile_maps/isometric/decorations/looking.psd b/2d/layered_tile_maps/isometric/decorations/looking.psd new file mode 100644 index 0000000..e11b5e8 Binary files /dev/null and b/2d/layered_tile_maps/isometric/decorations/looking.psd differ diff --git a/2d/layered_tile_maps/isometric/decorations/paw_prints.png b/2d/layered_tile_maps/isometric/decorations/paw_prints.png new file mode 100644 index 0000000..0664fd3 Binary files /dev/null and b/2d/layered_tile_maps/isometric/decorations/paw_prints.png differ diff --git a/2d/layered_tile_maps/isometric/decorations/paw_prints.png.import b/2d/layered_tile_maps/isometric/decorations/paw_prints.png.import new file mode 100644 index 0000000..4416419 --- /dev/null +++ b/2d/layered_tile_maps/isometric/decorations/paw_prints.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dmqbp4e43sm1t" +path="res://.godot/imported/paw_prints.png-f99788aaeccec00607d299cbda1deba3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://decorations/paw_prints.png" +dest_files=["res://.godot/imported/paw_prints.png-f99788aaeccec00607d299cbda1deba3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/isometric/decorations/rug_1.png b/2d/layered_tile_maps/isometric/decorations/rug_1.png new file mode 100644 index 0000000..652ae18 Binary files /dev/null and b/2d/layered_tile_maps/isometric/decorations/rug_1.png differ diff --git a/2d/layered_tile_maps/isometric/decorations/rug_1.png.import b/2d/layered_tile_maps/isometric/decorations/rug_1.png.import new file mode 100644 index 0000000..ce3c08a --- /dev/null +++ b/2d/layered_tile_maps/isometric/decorations/rug_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bqugyxfkeyt7x" +path="res://.godot/imported/rug_1.png-73bb18740fb0416ff279c3e2e040e1e3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://decorations/rug_1.png" +dest_files=["res://.godot/imported/rug_1.png-73bb18740fb0416ff279c3e2e040e1e3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/isometric/decorations/shadow_gradient.png b/2d/layered_tile_maps/isometric/decorations/shadow_gradient.png new file mode 100644 index 0000000..6b373a8 Binary files /dev/null and b/2d/layered_tile_maps/isometric/decorations/shadow_gradient.png differ diff --git a/2d/layered_tile_maps/isometric/decorations/shadow_gradient.png.import b/2d/layered_tile_maps/isometric/decorations/shadow_gradient.png.import new file mode 100644 index 0000000..1e1eedb --- /dev/null +++ b/2d/layered_tile_maps/isometric/decorations/shadow_gradient.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cmxo4k7h2nl7h" +path="res://.godot/imported/shadow_gradient.png-ada77e271da2569a07ee8c308bf8f891.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://decorations/shadow_gradient.png" +dest_files=["res://.godot/imported/shadow_gradient.png-ada77e271da2569a07ee8c308bf8f891.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/isometric/decorations/sparkle.png b/2d/layered_tile_maps/isometric/decorations/sparkle.png new file mode 100644 index 0000000..28bb67b Binary files /dev/null and b/2d/layered_tile_maps/isometric/decorations/sparkle.png differ diff --git a/2d/layered_tile_maps/isometric/decorations/sparkle.png.import b/2d/layered_tile_maps/isometric/decorations/sparkle.png.import new file mode 100644 index 0000000..deee8ac --- /dev/null +++ b/2d/layered_tile_maps/isometric/decorations/sparkle.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bs6uc40vmpmhd" +path="res://.godot/imported/sparkle.png-19a635cf744f1090fe6b7df22aa07aa4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://decorations/sparkle.png" +dest_files=["res://.godot/imported/sparkle.png-19a635cf744f1090fe6b7df22aa07aa4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/isometric/decorations/vase_1.png b/2d/layered_tile_maps/isometric/decorations/vase_1.png new file mode 100644 index 0000000..adbe33f Binary files /dev/null and b/2d/layered_tile_maps/isometric/decorations/vase_1.png differ diff --git a/2d/layered_tile_maps/isometric/decorations/vase_1.png.import b/2d/layered_tile_maps/isometric/decorations/vase_1.png.import new file mode 100644 index 0000000..cf0e054 --- /dev/null +++ b/2d/layered_tile_maps/isometric/decorations/vase_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://qqvwu82wedp2" +path="res://.godot/imported/vase_1.png-926d438e092a6711354055578c6046bd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://decorations/vase_1.png" +dest_files=["res://.godot/imported/vase_1.png-926d438e092a6711354055578c6046bd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/isometric/decorations/vase_1.tscn b/2d/layered_tile_maps/isometric/decorations/vase_1.tscn new file mode 100644 index 0000000..ea4dbb3 --- /dev/null +++ b/2d/layered_tile_maps/isometric/decorations/vase_1.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=3 format=3 uid="uid://dxxtyefaa4rtn"] + +[ext_resource type="Texture2D" uid="uid://qqvwu82wedp2" path="res://decorations/vase_1.png" id="1"] + +[sub_resource type="CapsuleShape2D" id="1"] +radius = 9.0 + +[node name="Vase1" type="Node2D"] +y_sort_enabled = true + +[node name="StaticBody2D" type="StaticBody2D" parent="."] + +[node name="Sprite2D" type="Sprite2D" parent="StaticBody2D"] +position = Vector2(0, -29) +texture = ExtResource("1") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2(0, -9) +rotation = 1.5708 +shape = SubResource("1") diff --git a/2d/layered_tile_maps/isometric/decorations/vase_2.png b/2d/layered_tile_maps/isometric/decorations/vase_2.png new file mode 100644 index 0000000..895da96 Binary files /dev/null and b/2d/layered_tile_maps/isometric/decorations/vase_2.png differ diff --git a/2d/layered_tile_maps/isometric/decorations/vase_2.png.import b/2d/layered_tile_maps/isometric/decorations/vase_2.png.import new file mode 100644 index 0000000..2148ccc --- /dev/null +++ b/2d/layered_tile_maps/isometric/decorations/vase_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cfl2km5k5pbgd" +path="res://.godot/imported/vase_2.png-d6cca4a3647dd9b8a230cb201e6f4d32.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://decorations/vase_2.png" +dest_files=["res://.godot/imported/vase_2.png-d6cca4a3647dd9b8a230cb201e6f4d32.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/isometric/decorations/vase_2.tscn b/2d/layered_tile_maps/isometric/decorations/vase_2.tscn new file mode 100644 index 0000000..a1c4fbf --- /dev/null +++ b/2d/layered_tile_maps/isometric/decorations/vase_2.tscn @@ -0,0 +1,21 @@ +[gd_scene load_steps=3 format=3 uid="uid://ccxtgas16pmio"] + +[ext_resource type="Texture2D" uid="uid://cfl2km5k5pbgd" path="res://decorations/vase_2.png" id="1"] + +[sub_resource type="CapsuleShape2D" id="1"] +radius = 9.0 +height = 18.0 + +[node name="vase2" type="Node2D"] +y_sort_enabled = true + +[node name="Area2D" type="StaticBody2D" parent="."] + +[node name="Sprite2D" type="Sprite2D" parent="Area2D"] +position = Vector2(0, -20) +texture = ExtResource("1") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +position = Vector2(0, -8) +rotation = 1.5708 +shape = SubResource("1") diff --git a/2d/layered_tile_maps/isometric/decorations/wall_skull.png b/2d/layered_tile_maps/isometric/decorations/wall_skull.png new file mode 100644 index 0000000..de10920 Binary files /dev/null and b/2d/layered_tile_maps/isometric/decorations/wall_skull.png differ diff --git a/2d/layered_tile_maps/isometric/decorations/wall_skull.png.import b/2d/layered_tile_maps/isometric/decorations/wall_skull.png.import new file mode 100644 index 0000000..d7ca4df --- /dev/null +++ b/2d/layered_tile_maps/isometric/decorations/wall_skull.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cy8biel27i5i7" +path="res://.godot/imported/wall_skull.png-b65fc438ee51c09cef1ea57aa5c7d6b2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://decorations/wall_skull.png" +dest_files=["res://.godot/imported/wall_skull.png-b65fc438ee51c09cef1ea57aa5c7d6b2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/isometric/dungeon.tscn b/2d/layered_tile_maps/isometric/dungeon.tscn new file mode 100644 index 0000000..093297d --- /dev/null +++ b/2d/layered_tile_maps/isometric/dungeon.tscn @@ -0,0 +1,1643 @@ +[gd_scene load_steps=83 format=3 uid="uid://cj3kyrrcqcaij"] + +[ext_resource type="TileSet" uid="uid://ceswxvl27cesm" path="res://tileset/tileset.tres" id="1"] +[ext_resource type="Texture2D" uid="uid://cy8biel27i5i7" path="res://decorations/wall_skull.png" id="2"] +[ext_resource type="PackedScene" uid="uid://bqpkxht3mx8l8" path="res://player/goblin.tscn" id="3"] +[ext_resource type="PackedScene" path="res://decorations/candle.tscn" id="4"] +[ext_resource type="Texture2D" uid="uid://bqugyxfkeyt7x" path="res://decorations/rug_1.png" id="5"] +[ext_resource type="Texture2D" uid="uid://bycat883fu7q2" path="res://decorations/banner.png" id="6"] +[ext_resource type="PackedScene" uid="uid://dxxtyefaa4rtn" path="res://decorations/vase_1.tscn" id="7"] +[ext_resource type="PackedScene" uid="uid://ccxtgas16pmio" path="res://decorations/vase_2.tscn" id="8"] +[ext_resource type="PackedScene" path="res://decorations/coin_pile.tscn" id="9"] +[ext_resource type="PackedScene" path="res://decorations/bone_pile_1.tscn" id="10"] +[ext_resource type="PackedScene" path="res://decorations/bone_pile_2.tscn" id="11"] +[ext_resource type="Texture2D" uid="uid://cginrtmcplrec" path="res://decorations/glow.png" id="12"] +[ext_resource type="Texture2D" uid="uid://cmxo4k7h2nl7h" path="res://decorations/shadow_gradient.png" id="13"] +[ext_resource type="PackedScene" path="res://decorations/internal_shadow.tscn" id="14"] +[ext_resource type="Texture2D" uid="uid://dahfdmuvra5we" path="res://decorations/drape_1.png" id="15"] +[ext_resource type="Texture2D" uid="uid://dmqbp4e43sm1t" path="res://decorations/paw_prints.png" id="16"] +[ext_resource type="Texture2D" uid="uid://d3j0qnogdctw4" path="res://decorations/crow_sleep.png" id="18"] +[ext_resource type="Texture2D" uid="uid://dami7imxtk2iq" path="res://decorations/crow_looking.png" id="19"] + +[sub_resource type="CanvasItemMaterial" id="23"] +blend_mode = 1 + +[sub_resource type="OccluderPolygon2D" id="13"] +polygon = PackedVector2Array(578, 218, 572, 292, 383, 387, 65, 225, 3, 252, 3, 318, 245, 440, 185, 474, 125, 444, 63, 472, 171, 488, 193, 484, 193, 538, 321, 478, 443, 542, 571, 478, 455, 410, 831, 222, 765, 184, 701, 218, 641, 190) + +[sub_resource type="OccluderPolygon2D" id="1"] +polygon = PackedVector2Array(380, -64, 194, 30, 191, 56, 180, 61, 178, 110, 171, 114, 172, 126, 180, 137, 199, 139, 214, 137, 219, 128, 230, 114, 371, 184, 371, 207, 363, 212, 363, 223, 368, 229, 385, 237, 404, 232, 409, 225, 407, 211, 403, 203, 446, 223, 473, 174, 507, 127, 323, 29, 444, -34, 448, -99, 381, -130) + +[sub_resource type="OccluderPolygon2D" id="18"] +polygon = PackedVector2Array(1278, 252, 1280, 321, 1343, 348, 1350, 350, 1171, 440, 1294, 404, 1544, 317, 1409, 253, 1564, 176, 1495, 146) + +[sub_resource type="Gradient" id="11"] +offsets = PackedFloat32Array(0.0111732, 0.636872) +colors = PackedColorArray(0.648926, 0.648926, 0.648926, 1, 0, 0, 0, 1) + +[sub_resource type="GradientTexture2D" id="12"] +gradient = SubResource("11") +width = 500 +height = 500 +fill = 1 +fill_from = Vector2(0.5, 0.5) + +[sub_resource type="OccluderPolygon2D" id="14"] +polygon = PackedVector2Array(1152, 69, 1151, 105, 1183, 49, 1222, 30, 1229, -31, 1270, 3, 1295, -4, 1341, 42, 1344, 95, 1403, 125, 1405, 63, 1343, 31, 1406, -2, 1409, -131, 1217, -38, 1217, 26, 1088, -34, 1027, -3) + +[sub_resource type="OccluderPolygon2D" id="15"] +polygon = PackedVector2Array(704, 541, 583, 608, 580, 673, 627, 695, 704, 732, 895, 705, 834, 671, 932, 622, 878, 584, 832, 605) + +[sub_resource type="OccluderPolygon2D" id="16"] +polygon = PackedVector2Array(-58, 673, 384, 900, 748, 721, 906, 698, 906, 834, 436, 1033, 220, 995, -130, 814, -201, 726, -137, 702) + +[sub_resource type="OccluderPolygon2D" id="17"] +polygon = PackedVector2Array(786, 269, 829, 229, 459, 412, 512, 448, 623, 388, 623, 400, 618, 412, 623, 421, 646, 424, 659, 418, 664, 402, 660, 396, 661, 370) + +[sub_resource type="CanvasItemMaterial" id="21"] +light_mode = 1 + +[sub_resource type="CanvasItemMaterial" id="22"] +blend_mode = 1 +light_mode = 1 + +[sub_resource type="CanvasItemMaterial" id="41"] +light_mode = 1 + +[sub_resource type="AtlasTexture" id="43"] +atlas = ExtResource("18") +region = Rect2(0, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="44"] +atlas = ExtResource("18") +region = Rect2(64, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="45"] +atlas = ExtResource("18") +region = Rect2(128, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="46"] +atlas = ExtResource("18") +region = Rect2(192, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="47"] +atlas = ExtResource("18") +region = Rect2(256, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="48"] +atlas = ExtResource("18") +region = Rect2(320, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="49"] +atlas = ExtResource("18") +region = Rect2(384, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="50"] +atlas = ExtResource("18") +region = Rect2(448, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="51"] +atlas = ExtResource("18") +region = Rect2(512, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="52"] +atlas = ExtResource("18") +region = Rect2(576, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="53"] +atlas = ExtResource("18") +region = Rect2(640, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="54"] +atlas = ExtResource("18") +region = Rect2(704, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="55"] +atlas = ExtResource("18") +region = Rect2(768, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="56"] +atlas = ExtResource("18") +region = Rect2(832, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="57"] +atlas = ExtResource("18") +region = Rect2(896, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="58"] +atlas = ExtResource("18") +region = Rect2(960, 0, 64, 64) + +[sub_resource type="SpriteFrames" id="40"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("43") +}, { +"duration": 1.0, +"texture": SubResource("44") +}, { +"duration": 1.0, +"texture": SubResource("45") +}, { +"duration": 1.0, +"texture": SubResource("46") +}, { +"duration": 1.0, +"texture": SubResource("47") +}, { +"duration": 1.0, +"texture": SubResource("48") +}, { +"duration": 1.0, +"texture": SubResource("49") +}, { +"duration": 1.0, +"texture": SubResource("50") +}, { +"duration": 1.0, +"texture": SubResource("51") +}, { +"duration": 1.0, +"texture": SubResource("52") +}, { +"duration": 1.0, +"texture": SubResource("53") +}, { +"duration": 1.0, +"texture": SubResource("54") +}, { +"duration": 1.0, +"texture": SubResource("55") +}, { +"duration": 1.0, +"texture": SubResource("56") +}, { +"duration": 1.0, +"texture": SubResource("57") +}, { +"duration": 1.0, +"texture": SubResource("58") +}], +"loop": true, +"name": &"sleep", +"speed": 16.0 +}] + +[sub_resource type="CanvasItemMaterial" id="42"] +light_mode = 1 + +[sub_resource type="AtlasTexture" id="92"] +atlas = ExtResource("19") +region = Rect2(0, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="93"] +atlas = ExtResource("19") +region = Rect2(64, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="94"] +atlas = ExtResource("19") +region = Rect2(128, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="95"] +atlas = ExtResource("19") +region = Rect2(192, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="96"] +atlas = ExtResource("19") +region = Rect2(256, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="97"] +atlas = ExtResource("19") +region = Rect2(320, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="98"] +atlas = ExtResource("19") +region = Rect2(384, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="99"] +atlas = ExtResource("19") +region = Rect2(448, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="100"] +atlas = ExtResource("19") +region = Rect2(512, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="101"] +atlas = ExtResource("19") +region = Rect2(576, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="102"] +atlas = ExtResource("19") +region = Rect2(640, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="103"] +atlas = ExtResource("19") +region = Rect2(704, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="104"] +atlas = ExtResource("19") +region = Rect2(768, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="105"] +atlas = ExtResource("19") +region = Rect2(832, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="106"] +atlas = ExtResource("19") +region = Rect2(896, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="107"] +atlas = ExtResource("19") +region = Rect2(960, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="108"] +atlas = ExtResource("19") +region = Rect2(0, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="109"] +atlas = ExtResource("19") +region = Rect2(64, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="110"] +atlas = ExtResource("19") +region = Rect2(128, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="111"] +atlas = ExtResource("19") +region = Rect2(192, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="112"] +atlas = ExtResource("19") +region = Rect2(256, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="113"] +atlas = ExtResource("19") +region = Rect2(320, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="114"] +atlas = ExtResource("19") +region = Rect2(384, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="115"] +atlas = ExtResource("19") +region = Rect2(448, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="116"] +atlas = ExtResource("19") +region = Rect2(512, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="117"] +atlas = ExtResource("19") +region = Rect2(576, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="118"] +atlas = ExtResource("19") +region = Rect2(640, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="119"] +atlas = ExtResource("19") +region = Rect2(704, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="120"] +atlas = ExtResource("19") +region = Rect2(768, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="121"] +atlas = ExtResource("19") +region = Rect2(832, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="122"] +atlas = ExtResource("19") +region = Rect2(896, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="123"] +atlas = ExtResource("19") +region = Rect2(960, 64, 64, 64) + +[sub_resource type="SpriteFrames" id="91"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("92") +}, { +"duration": 1.0, +"texture": SubResource("93") +}, { +"duration": 1.0, +"texture": SubResource("94") +}, { +"duration": 1.0, +"texture": SubResource("95") +}, { +"duration": 1.0, +"texture": SubResource("96") +}, { +"duration": 1.0, +"texture": SubResource("97") +}, { +"duration": 1.0, +"texture": SubResource("98") +}, { +"duration": 1.0, +"texture": SubResource("99") +}, { +"duration": 1.0, +"texture": SubResource("100") +}, { +"duration": 1.0, +"texture": SubResource("101") +}, { +"duration": 1.0, +"texture": SubResource("102") +}, { +"duration": 1.0, +"texture": SubResource("103") +}, { +"duration": 1.0, +"texture": SubResource("104") +}, { +"duration": 1.0, +"texture": SubResource("105") +}, { +"duration": 1.0, +"texture": SubResource("106") +}, { +"duration": 1.0, +"texture": SubResource("107") +}, { +"duration": 1.0, +"texture": SubResource("108") +}, { +"duration": 1.0, +"texture": SubResource("109") +}, { +"duration": 1.0, +"texture": SubResource("110") +}, { +"duration": 1.0, +"texture": SubResource("111") +}, { +"duration": 1.0, +"texture": SubResource("112") +}, { +"duration": 1.0, +"texture": SubResource("113") +}, { +"duration": 1.0, +"texture": SubResource("114") +}, { +"duration": 1.0, +"texture": SubResource("115") +}, { +"duration": 1.0, +"texture": SubResource("116") +}, { +"duration": 1.0, +"texture": SubResource("117") +}, { +"duration": 1.0, +"texture": SubResource("118") +}, { +"duration": 1.0, +"texture": SubResource("119") +}, { +"duration": 1.0, +"texture": SubResource("120") +}, { +"duration": 1.0, +"texture": SubResource("121") +}, { +"duration": 1.0, +"texture": SubResource("122") +}, { +"duration": 1.0, +"texture": SubResource("123") +}], +"loop": true, +"name": &"looking", +"speed": 16.0 +}] + +[node name="Dungeon" type="Node2D"] + +[node name="Floor" type="TileMap" parent="."] +y_sort_enabled = true +position = Vector2(-64, -32) +tile_set = ExtResource("1") +format = 2 +layer_0/y_sort_enabled = true +layer_0/y_sort_origin = 32 +layer_0/tile_data = PackedInt32Array(-917493, 0, 0, -917492, 0, 0, -917491, 0, 0, -917490, 0, 0, -851957, 0, 0, -851956, 0, 0, -851955, 0, 0, -851954, 0, 0, -786421, 0, 0, -786420, 1, 0, -786419, 0, 0, -786418, 0, 0, -720885, 0, 0, -720884, 0, 0, -720883, 0, 0, -720882, 0, 0, -655349, 0, 0, -655348, 1, 0, -655347, 0, 0, -655346, 0, 0, -589813, 0, 0, -589812, 1, 0, -589811, 0, 0, -589810, 0, 0, -524277, 0, 0, -524276, 0, 0, -524275, 1, 0, -524274, 0, 0, -458747, 0, 0, -458746, 0, 0, -458745, 0, 0, -458744, 0, 0, -458743, 0, 0, -458742, 0, 0, -458741, 0, 0, -458740, 0, 0, -458739, 0, 0, -458738, 0, 0, -393211, 0, 0, -393210, 0, 0, -393209, 0, 0, -393208, 0, 0, -393207, 0, 0, -393206, 0, 0, -393205, 0, 0, -393204, 0, 0, -393203, 0, 0, -393202, 0, 0, -327675, 0, 0, -327674, 0, 0, -327673, 0, 0, -327672, 1, 0, -327671, 1, 0, -327670, 1, 0, -327669, 1, 0, -327668, 1, 0, -327667, 0, 0, -327666, 0, 0, -327665, 1, 65536, -327664, 1, 65536, -262139, 0, 0, -262138, 0, 0, -262137, 0, 0, -262136, 0, 0, -262135, 0, 0, -262134, 0, 0, -262133, 0, 0, -262132, 0, 0, -262131, 0, 0, -262130, 0, 0, -262129, 1, 65536, -262128, 1, 65536, -196608, 0, 0, -196607, 0, 0, -196606, 0, 0, -196603, 0, 0, -196602, 0, 0, -196601, 0, 0, -196600, 0, 0, -196599, 0, 0, -196598, 0, 0, -196597, 0, 0, -196596, 0, 0, -196595, 0, 0, -196594, 0, 0, -196593, 1, 65536, -196592, 1, 65536, -131072, 1, 0, -131071, 1, 0, -131070, 0, 0, -131067, 0, 0, -131066, 0, 0, -131065, 0, 0, -131064, 0, 0, -131063, 0, 0, -131061, 1, 65536, -131060, 1, 65536, -131059, 1, 0, -131058, 1, 0, -131057, 1, 65536, -131056, 1, 65536, -65536, 1, 0, -65535, 1, 0, -65534, 0, 0, -65531, 0, 0, -65530, 0, 0, -65529, 0, 0, -65528, 0, 0, -65527, 0, 0, -65525, 0, 0, -65524, 1, 65536, -65523, 1, 65536, -65522, 1, 0, -65521, 1, 65536, -65520, 1, 65536, 0, 0, 0, 1, 1, 0, 2, 0, 0, 3, 0, 0, 4, 0, 0, 5, 0, 0, 6, 0, 0, 7, 1, 0, 8, 0, 0, 9, 0, 0, 11, 1, 65536, 12, 1, 65536, 13, 1, 65536, 14, 1, 0, 15, 1, 65536, 16, 1, 65536, 65536, 0, 0, 65537, 0, 0, 65538, 1, 0, 65539, 0, 0, 65540, 0, 0, 65541, 1, 0, 65542, 0, 0, 65543, 0, 0, 65544, 0, 0, 65545, 0, 0, 65547, 1, 65536, 65548, 0, 0, 65549, 0, 0, 65550, 0, 0, 65551, 1, 65536, 65552, 1, 65536, 131072, 0, 0, 131073, 1, 0, 131074, 0, 0, 131075, 0, 0, 131076, 0, 0, 131077, 0, 0, 131078, 0, 0, 131079, 0, 0, 131080, 0, 0, 131081, 0, 0, 131083, 0, 0, 131084, 0, 0, 131085, 1, 65536, 131086, 1, 65536, 131087, 1, 65536, 131088, 1, 65536, 196608, 0, 0, 196609, 0, 0, 196610, 0, 0, 196611, 0, 0, 196612, 0, 0, 196613, 0, 0, 196614, 0, 0, 196615, 0, 0, 196616, 0, 0, 196619, 1, 65536, 196620, 1, 65536, 196621, 1, 65536, 196622, 1, 65536, 196623, 1, 65536, 196624, 1, 65536, 262157, 1, 65536, 327693, 1, 65536, 393227, 0, 0, 393228, 1, 65536, 393229, 1, 65536, 393230, 1, 65536, 393231, 1, 65536, 393232, 0, 0, 393233, 1, 65536, 458763, 1, 65536, 458764, 0, 0, 458765, 1, 0, 458766, 0, 0, 458767, 1, 0, 458768, 1, 65536, 458769, 1, 65536, 524299, 0, 0, 524300, 1, 65536, 524301, 1, 65536, 524302, 1, 0, 524303, 1, 65536, 524304, 1, 65536, 524305, 1, 65536, 589835, 1, 65536, 589836, 0, 0, 589837, 1, 65536, 589838, 1, 65536, 589839, 0, 0, 589840, 1, 65536, 589841, 1, 65536, 655371, 1, 65536, 655372, 1, 65536, 655373, 0, 0, 655374, 1, 65536, 655375, 1, 65536, 655376, 1, 65536, 655377, 1, 65536, 720907, 1, 65536, 720908, 1, 65536, 720909, 1, 65536, 720910, 1, 65536, 720911, 1, 65536, 720912, 1, 65536, 720913, 1, 65536, 196617, 0, 0, 327694, 0, 0, 262158, 0, 0) + +[node name="Glow" type="Sprite2D" parent="Floor"] +modulate = Color(0.164706, 0, 0.152941, 1) +position = Vector2(773, 256) +scale = Vector2(4.8125, 2.5) +texture = ExtResource("12") + +[node name="Glow2" type="Sprite2D" parent="Floor"] +modulate = Color(0.164706, 0, 0.152941, 1) +position = Vector2(1535, 234) +rotation = -0.436332 +scale = Vector2(10.9891, 2.5) +texture = ExtResource("12") + +[node name="Glow3" type="Sprite2D" parent="Floor"] +modulate = Color(0.164706, 0, 0.152941, 1) +position = Vector2(1182, 523) +rotation = -0.436332 +scale = Vector2(10.9891, 2.5) +texture = ExtResource("12") + +[node name="Glow12" type="Sprite2D" parent="Floor"] +modulate = Color(0.164706, 0, 0.152941, 1) +position = Vector2(851, 626) +rotation = 1.93033 +scale = Vector2(0.982245, 3.53429) +texture = ExtResource("12") + +[node name="Glow13" type="Sprite2D" parent="Floor"] +modulate = Color(0.164706, 0, 0.152941, 1) +position = Vector2(590, 470) +rotation = 1.0472 +scale = Vector2(1.3224, 3.25661) +texture = ExtResource("12") + +[node name="Glow14" type="Sprite2D" parent="Floor"] +modulate = Color(0.164706, 0, 0.152941, 1) +position = Vector2(90, 725) +rotation = 1.0472 +scale = Vector2(1.3224, 3.25661) +texture = ExtResource("12") + +[node name="Glow8" type="Sprite2D" parent="Floor"] +modulate = Color(0.164706, 0, 0.152941, 1) +position = Vector2(356, 37) +rotation = -0.436332 +scale = Vector2(5.56892, 1.51161) +texture = ExtResource("12") + +[node name="Glow11" type="Sprite2D" parent="Floor"] +modulate = Color(0.164706, 0, 0.152941, 1) +position = Vector2(566, 164) +rotation = -0.623083 +scale = Vector2(4.00932, 1.37909) +texture = ExtResource("12") + +[node name="Glow9" type="Sprite2D" parent="Floor"] +modulate = Color(0.164706, 0, 0.152941, 1) +position = Vector2(-130, 139) +rotation = 0.445059 +scale = Vector2(5.56892, 1.51161) +texture = ExtResource("12") + +[node name="Glow10" type="Sprite2D" parent="Floor"] +modulate = Color(0.164706, 0, 0.152941, 1) +position = Vector2(392, 184) +rotation = 0.445059 +scale = Vector2(5.56892, 1.51161) +texture = ExtResource("12") + +[node name="Glow4" type="Sprite2D" parent="Floor"] +modulate = Color(0.164706, 0, 0.152941, 1) +position = Vector2(312, 387) +rotation = 0.513127 +scale = Vector2(10.9891, 2.5) +texture = ExtResource("12") + +[node name="Glow5" type="Sprite2D" parent="Floor"] +modulate = Color(0.164706, 0, 0.152941, 1) +position = Vector2(601, 375) +rotation = -0.490438 +scale = Vector2(10.9891, 2.5) +texture = ExtResource("12") + +[node name="Glow6" type="Sprite2D" parent="Floor"] +modulate = Color(0.164706, 0, 0.152941, 1) +position = Vector2(641, 856) +rotation = -0.490438 +scale = Vector2(17.9912, 2.5) +texture = ExtResource("12") + +[node name="Glow7" type="Sprite2D" parent="Floor"] +modulate = Color(0.164706, 0, 0.152941, 1) +position = Vector2(255, 861) +rotation = 0.462512 +scale = Vector2(17.9912, 2.5) +texture = ExtResource("12") + +[node name="Walls" type="TileMap" parent="."] +y_sort_enabled = true +position = Vector2(-64, -32) +tile_set = ExtResource("1") +format = 2 +layer_0/y_sort_enabled = true +layer_0/y_sort_origin = 32 +layer_0/tile_data = PackedInt32Array(-917493, 2, 0, -917492, 2, 0, -917491, 2, 0, -917490, 2, 0, -917489, 2, 0, -851957, 2, 0, -851956, 3, 0, -851953, 2, 0, -786421, 2, 0, -786420, 3, 0, -786417, 2, 0, -720885, 2, 0, -720881, 2, 0, -655349, 2, 0, -655348, 2, 0, -655345, 2, 0, -589813, 2, 0, -589809, 2, 0, -524277, 2, 0, -524273, 2, 0, -458747, 2, 0, -458746, 2, 0, -458745, 2, 0, -458744, 4, 65536, -458743, 4, 65536, -458742, 2, 0, -458741, 2, 0, -458737, 2, 0, -393211, 2, 0, -393209, 3, 0, -393206, 3, 0, -393201, 2, 0, -393200, 2, 65536, -393199, 2, 65536, -327675, 4, 0, -327663, 2, 65536, -196609, 2, 0, -262144, 2, 0, -262143, 2, 0, -262142, 2, 0, -262141, 2, 0, -262139, 4, 0, -262127, 2, 65536, -131073, 2, 0, -196605, 2, 0, -196603, 2, 0, -196591, 2, 65536, -65537, 2, 0, -131072, 3, 0, -131069, 2, 0, -131067, 2, 0, -131066, 3, 0, -131063, 3, 0, -131062, 2, 0, -131055, 2, 65536, -1, 2, 0, -65533, 2, 0, -65532, 2, 0, -65531, 2, 0, -65530, 2, 0, -65527, 2, 0, -65526, 2, 0, -65525, 3, 0, -65522, 3, 0, -65520, 3, 0, -65519, 2, 65536, 65535, 2, 0, 3, 3, 0, 6, 3, 0, 10, 2, 0, 16, 3, 0, 17, 2, 65536, 131071, 2, 0, 65546, 2, 0, 65547, 3, 0, 65550, 3, 0, 65552, 3, 0, 65553, 2, 65536, 196607, 2, 0, 131072, 3, 0, 131081, 3, 0, 131082, 2, 0, 131089, 2, 65536, 262143, 2, 0, 196618, 2, 0, 196625, 2, 65536, 327679, 2, 0, 262144, 2, 0, 262145, 2, 0, 262146, 2, 0, 262147, 4, 65536, 262148, 4, 65536, 262149, 2, 0, 262150, 2, 0, 262151, 2, 0, 262152, 2, 0, 262153, 2, 0, 262154, 2, 0, 262155, 2, 65536, 262156, 2, 65536, 262159, 2, 65536, 262160, 2, 65536, 262161, 2, 65536, 327690, 2, 65536, 327691, 2, 65536, 327692, 2, 65536, 327695, 2, 65536, 327696, 2, 65536, 327697, 2, 65536, 327698, 2, 65536, 393226, 2, 65536, 393232, 3, 0, 393234, 2, 65536, 458762, 2, 65536, 458767, 3, 0, 458770, 2, 65536, 524298, 2, 65536, 524306, 2, 65536, 589834, 2, 65536, 589842, 2, 65536, 655370, 2, 65536, 655371, 3, 0, 655375, 3, 0, 655376, 3, 0, 655378, 2, 65536, 720906, 2, 65536, 720912, 3, 0, 720914, 2, 65536, 786442, 2, 65536, 786443, 2, 65536, 786444, 2, 65536, 786445, 2, 65536, 786446, 2, 65536, 786447, 2, 65536, 786448, 2, 65536, 786449, 2, 65536, 786450, 2, 65536, 393233, 3, 0) + +[node name="Shadows" type="Node2D" parent="Walls"] +position = Vector2(64, 32) + +[node name="InternalShadow1" parent="Walls/Shadows" instance=ExtResource("14")] +position = Vector2(328, 545) +polygon = PackedVector2Array(-5, -66, -5, -23, 57, 11, 57, -34) + +[node name="InternalShadow2" parent="Walls/Shadows" instance=ExtResource("14")] +position = Vector2(582, 291) +polygon = PackedVector2Array(-5, -66, -6, -39, 56, -6, 57, -34) + +[node name="InternalShadow3" parent="Walls/Shadows" instance=ExtResource("14")] +position = Vector2(579, 672) +polygon = PackedVector2Array(-4, -69, -5, -19, 57, 11, 57, -34) + +[node name="InternalShadow4" parent="Walls/Shadows" instance=ExtResource("14")] +position = Vector2(648, 708) +polygon = PackedVector2Array(-4, -69, -5, -19, 57, 11, 57, -34) + +[node name="InternalShadow12" parent="Walls/Shadows" instance=ExtResource("14")] +position = Vector2(1346, 99) +polygon = PackedVector2Array(-5, -5, 59, 27, 59, -4, -4, -69) + +[node name="InternalShadow13" parent="Walls/Shadows" instance=ExtResource("14")] +position = Vector2(1416, 55) +polygon = PackedVector2Array(-6, 7, 103, -46, 53, -122, -10, -58) + +[node name="InternalShadow14" parent="Walls/Shadows" instance=ExtResource("14")] +position = Vector2(0, 705) +polygon = PackedVector2Array(-50, 21, 62, -32, 60, -117, -70, -28) + +[node name="InternalShadow15" parent="Walls/Shadows" instance=ExtResource("14")] +position = Vector2(-196, 96) +polygon = PackedVector2Array(-50, 21, 62, -32, -2, -88, -70, -28) + +[node name="InternalShadow5" parent="Walls/Shadows" instance=ExtResource("14")] +position = Vector2(709, 739) +polygon = PackedVector2Array(-4, -69, -5, -19, 57, 11, 57, -34) + +[node name="InternalShadow6" parent="Walls/Shadows" instance=ExtResource("14")] +position = Vector2(1464, 99) +scale = Vector2(-1, 1) +polygon = PackedVector2Array(-6, -70, -6, -23, 58, 14, 58, -35) + +[node name="InternalShadow7" parent="Walls/Shadows" instance=ExtResource("14")] +position = Vector2(569, 99) +scale = Vector2(-1, 1) +polygon = PackedVector2Array(-6, -70, -6, -23, 58, 14, 58, -35) + +[node name="InternalShadow8" parent="Walls/Shadows" instance=ExtResource("14")] +position = Vector2(504, 131) +scale = Vector2(-1, 1) +polygon = PackedVector2Array(-6, -70, -6, -23, 58, 14, 58, -35) + +[node name="InternalShadow9" parent="Walls/Shadows" instance=ExtResource("14")] +position = Vector2(390, 576) +polygon = PackedVector2Array(-5, -65, -4, -24, 61, 10, 59, -33) + +[node name="InternalShadow10" parent="Walls/Shadows" instance=ExtResource("14")] +position = Vector2(1285, 323) +polygon = PackedVector2Array(-5, -65, -4, -24, 61, 10, 59, -33) + +[node name="InternalShadow11" parent="Walls/Shadows" instance=ExtResource("14")] +position = Vector2(1350, 353) +polygon = PackedVector2Array(-5, -65, -4, -24, 61, 10, 59, -33) + +[node name="CollisionDecorations" type="Node2D" parent="Walls"] +position = Vector2(64, 32) + +[node name="Vase1_2" parent="Walls/CollisionDecorations" instance=ExtResource("7")] +position = Vector2(741, 38) + +[node name="Vase1_3" parent="Walls/CollisionDecorations" instance=ExtResource("7")] +position = Vector2(1264, 285) + +[node name="Vase1_4" parent="Walls/CollisionDecorations" instance=ExtResource("7")] +position = Vector2(1492, 79) + +[node name="Vase1_5" parent="Walls/CollisionDecorations" instance=ExtResource("7")] +position = Vector2(324, 610) + +[node name="Vase1_6" parent="Walls/CollisionDecorations" instance=ExtResource("7")] +position = Vector2(248, 655) + +[node name="vase2_1" parent="Walls/CollisionDecorations" instance=ExtResource("8")] +position = Vector2(16, 20) + +[node name="vase2_3" parent="Walls/CollisionDecorations" instance=ExtResource("8")] +position = Vector2(787, 43) + +[node name="vase2_4" parent="Walls/CollisionDecorations" instance=ExtResource("8")] +position = Vector2(-28, 46) + +[node name="vase2_5" parent="Walls/CollisionDecorations" instance=ExtResource("8")] +position = Vector2(1242, 313) + +[node name="vase2_6" parent="Walls/CollisionDecorations" instance=ExtResource("8")] +position = Vector2(1118, 343) + +[node name="vase2_8" parent="Walls/CollisionDecorations" instance=ExtResource("8")] +position = Vector2(838, 257) + +[node name="vase2_7" parent="Walls/CollisionDecorations" instance=ExtResource("8")] +position = Vector2(296, 655) + +[node name="coin_pile" parent="Walls/CollisionDecorations" instance=ExtResource("9")] +position = Vector2(117, 251) +scale = Vector2(0.5, 0.5) + +[node name="coin_pile2" parent="Walls/CollisionDecorations" instance=ExtResource("9")] +position = Vector2(10, 43) +scale = Vector2(0.5, 0.5) + +[node name="coin_pile8" parent="Walls/CollisionDecorations" instance=ExtResource("9")] +position = Vector2(245, 158) +scale = Vector2(0.5, 0.5) + +[node name="coin_pile9" parent="Walls/CollisionDecorations" instance=ExtResource("9")] +position = Vector2(225, 165) +scale = Vector2(-0.5, 0.5) + +[node name="coin_pile10" parent="Walls/CollisionDecorations" instance=ExtResource("9")] +position = Vector2(-66, 47) +scale = Vector2(0.5, 0.5) + +[node name="coin_pile6" parent="Walls/CollisionDecorations" instance=ExtResource("9")] +position = Vector2(197, 644) +scale = Vector2(0.5, 0.5) + +[node name="coin_pile3" parent="Walls/CollisionDecorations" instance=ExtResource("9")] +position = Vector2(232, 148) +rotation = -3.14159 +scale = Vector2(0.5, -0.5) + +[node name="coin_pile4" parent="Walls/CollisionDecorations" instance=ExtResource("9")] +position = Vector2(763, 67) +rotation = -3.14159 +scale = Vector2(0.5, -0.5) + +[node name="coin_pile5" parent="Walls/CollisionDecorations" instance=ExtResource("9")] +position = Vector2(1242, 343) +rotation = -3.14159 +scale = Vector2(0.5, -0.5) + +[node name="coin_pile7" parent="Walls/CollisionDecorations" instance=ExtResource("9")] +position = Vector2(338, 639) +rotation = -3.14159 +scale = Vector2(0.5, -0.5) + +[node name="bone_pile" parent="Walls/CollisionDecorations" instance=ExtResource("10")] +position = Vector2(609, 114) + +[node name="bone_pile2" parent="Walls/CollisionDecorations" instance=ExtResource("10")] +position = Vector2(1342, 145) + +[node name="bone_pile3" parent="Walls/CollisionDecorations" instance=ExtResource("10")] +position = Vector2(611, 460) + +[node name="bone_pile4" parent="Walls/CollisionDecorations" instance=ExtResource("11")] +position = Vector2(-73, 135) +scale = Vector2(-1, 1) + +[node name="bone_pile5" parent="Walls/CollisionDecorations" instance=ExtResource("11")] +position = Vector2(569, 152) + +[node name="bone_pile9" parent="Walls/CollisionDecorations" instance=ExtResource("11")] +position = Vector2(1653, 50) + +[node name="bone_pile6" parent="Walls/CollisionDecorations" instance=ExtResource("11")] +position = Vector2(1242, 388) + +[node name="bone_pile10" parent="Walls/CollisionDecorations" instance=ExtResource("11")] +position = Vector2(1046, 204) +scale = Vector2(-1, 1) + +[node name="bone_pile7" parent="Walls/CollisionDecorations" instance=ExtResource("11")] +position = Vector2(704, 409) + +[node name="bone_pile8" parent="Walls/CollisionDecorations" instance=ExtResource("11")] +position = Vector2(146, 686) + +[node name="FloorObjects" type="Node2D" parent="Walls"] +position = Vector2(64, 32) + +[node name="Rug1" type="Sprite2D" parent="Walls/FloorObjects"] +position = Vector2(55, 119) +scale = Vector2(0.7, 0.7) +texture = ExtResource("5") + +[node name="Rug2" type="Sprite2D" parent="Walls/FloorObjects"] +position = Vector2(388, 720) +scale = Vector2(0.7, 0.7) +texture = ExtResource("5") + +[node name="Rug3" type="Sprite2D" parent="Walls/FloorObjects"] +position = Vector2(976, 290) +scale = Vector2(-1, 1) +texture = ExtResource("5") + +[node name="PawPrints" type="Polygon2D" parent="Walls/FloorObjects"] +position = Vector2(786, 334) +color = Color(0.0901961, 0.0705882, 0.215686, 1) +texture = ExtResource("16") +polygon = PackedVector2Array(46, 20, -36, 54, 60, 105, 136, 63) +uv = PackedVector2Array(1, 0, 0, 120, 129, 120, 129, 0) + +[node name="PawPrints7" type="Polygon2D" parent="Walls/FloorObjects"] +position = Vector2(115, 670) +color = Color(0.0901961, 0.0705882, 0.215686, 1) +texture = ExtResource("16") +polygon = PackedVector2Array(46, 20, -36, 54, 60, 105, 136, 63) +uv = PackedVector2Array(1, 0, 0, 120, 129, 120, 129, 0) + +[node name="PawPrints4" type="Polygon2D" parent="Walls/FloorObjects"] +position = Vector2(168, 123) +color = Color(0.0901961, 0.0705882, 0.215686, 1) +texture = ExtResource("16") +polygon = PackedVector2Array(-4, 65, -8, 122, 116, 107, 101, 54) +uv = PackedVector2Array(1, 0, 0, 120, 129, 120, 129, 0) + +[node name="PawPrints5" type="Polygon2D" parent="Walls/FloorObjects"] +position = Vector2(506, 602) +color = Color(0.0901961, 0.0705882, 0.215686, 1) +texture = ExtResource("16") +polygon = PackedVector2Array(-4, 65, -8, 122, 116, 107, 101, 54) +uv = PackedVector2Array(1, 0, 0, 120, 129, 120, 129, 0) + +[node name="PawPrints2" type="Polygon2D" parent="Walls/FloorObjects"] +material = SubResource("23") +position = Vector2(1234, 114) +color = Color(0.156863, 0.462745, 0.501961, 0.505882) +texture = ExtResource("16") +polygon = PackedVector2Array(46, 20, -36, 54, 60, 105, 136, 63) +uv = PackedVector2Array(1, 0, 0, 120, 129, 120, 129, 0) + +[node name="PawPrints6" type="Polygon2D" parent="Walls/FloorObjects"] +material = SubResource("23") +position = Vector2(-50, 169) +color = Color(0.156863, 0.462745, 0.501961, 0.505882) +texture = ExtResource("16") +polygon = PackedVector2Array(46, 20, -36, 54, 60, 105, 136, 63) +uv = PackedVector2Array(1, 0, 0, 120, 129, 120, 129, 0) + +[node name="PawPrints3" type="Polygon2D" parent="Walls/FloorObjects"] +material = SubResource("23") +position = Vector2(616, 10) +color = Color(0.156863, 0.462745, 0.501961, 0.505882) +texture = ExtResource("16") +polygon = PackedVector2Array(28, 31, 24, 84, 124, 83, 125, 39) +uv = PackedVector2Array(1, 0, 0, 120, 129, 120, 129, 0) + +[node name="Goblin" parent="Walls" instance=ExtResource("3")] +position = Vector2(273, -2) + +[node name="Node2D" type="Node2D" parent="Walls"] + +[node name="HighWalls" type="TileMap" parent="."] +y_sort_enabled = true +position = Vector2(-64, -32) +tile_set = ExtResource("1") +format = 2 +layer_0/y_sort_enabled = true +layer_0/tile_data = PackedInt32Array(-983030, 2, 0, -983029, 2, 0, -983028, 2, 0, -983027, 2, 0, -983026, 2, 0, -917494, 2, 0, -851958, 2, 0, -786422, 2, 0, -720886, 2, 0, -655350, 2, 0, -589814, 2, 0, -524284, 2, 0, -524283, 2, 0, -524282, 2, 0, -524279, 2, 0, -524278, 2, 0, -458748, 2, 0, -262146, 2, 0, -262145, 2, 0, -327680, 2, 0, -327679, 2, 0, -327678, 2, 0, -196610, 2, 0, -131074, 2, 0, -65538, 2, 0, -2, 2, 0, 65534, 2, 0, 131070, 2, 0, 196606, 2, 0, 262142, 2, 0, 458761, 2, 0, 524297, 2, 0, 589833, 2, 0, 655369, 2, 0, 720905, 2, 0) + +[node name="HighWalls2" type="TileMap" parent="."] +y_sort_enabled = true +position = Vector2(-64, -32) +tile_set = ExtResource("1") +format = 2 +layer_0/y_sort_enabled = true +layer_0/tile_data = PackedInt32Array(-1048567, 2, 0, -1048566, 2, 0, -1048565, 2, 0, -1048564, 2, 0, -983031, 2, 0, -917495, 2, 0, -851959, 2, 0, -786423, 2, 0, -720887, 2, 0, -655351, 2, 0, -589821, 2, 0, -589820, 2, 0, -327683, 2, 0, -327682, 2, 0, -327681, 2, 0, -393216, 2, 0, -262147, 2, 0, -196611, 2, 0, -131075, 2, 0, -65539, 2, 0, -3, 2, 0, 65533, 2, 0, 131069, 2, 0, 524296, 2, 0, 589832, 2, 0, 655368, 2, 0) + +[node name="Decorations" type="Node2D" parent="."] + +[node name="Candles" type="Node2D" parent="Decorations"] + +[node name="c1" parent="Decorations/Candles" instance=ExtResource("4")] +position = Vector2(223, -147) + +[node name="c2" parent="Decorations/Candles" instance=ExtResource("4")] +position = Vector2(1691, -48) + +[node name="c11" parent="Decorations/Candles" instance=ExtResource("4")] +position = Vector2(859, -17) + +[node name="c3" parent="Decorations/Candles" instance=ExtResource("4")] +position = Vector2(355, -86) + +[node name="c4" parent="Decorations/Candles" instance=ExtResource("4")] +position = Vector2(-96, -25) +scale = Vector2(-1, 1) + +[node name="c8" parent="Decorations/Candles" instance=ExtResource("4")] +position = Vector2(-205, 30) +scale = Vector2(-1, 1) + +[node name="c5" parent="Decorations/Candles" instance=ExtResource("4")] +position = Vector2(1248, 81) +scale = Vector2(-1, 1) + +[node name="c9" parent="Decorations/Candles" instance=ExtResource("4")] +position = Vector2(734, -41) +scale = Vector2(-1, 1) + +[node name="c6" parent="Decorations/Candles" instance=ExtResource("4")] +position = Vector2(161, 560) +scale = Vector2(-1, 1) + +[node name="c10" parent="Decorations/Candles" instance=ExtResource("4")] +position = Vector2(17, 632) +scale = Vector2(-1, 1) + +[node name="c7" parent="Decorations/Candles" instance=ExtResource("4")] +position = Vector2(1464, -22) +scale = Vector2(-1, 1) + +[node name="banners" type="Node2D" parent="Decorations"] + +[node name="Drape1" type="Sprite2D" parent="Decorations/banners"] +position = Vector2(-107, -100) +rotation = 3.14159 +scale = Vector2(0.960001, -1) +texture = ExtResource("15") + +[node name="Drape3" type="Sprite2D" parent="Decorations/banners"] +position = Vector2(-67, 583) +rotation = 3.14159 +scale = Vector2(0.960001, -1) +texture = ExtResource("15") + +[node name="Drape4" type="Sprite2D" parent="Decorations/banners"] +position = Vector2(12, 543) +rotation = 3.14159 +scale = Vector2(0.960001, -1) +texture = ExtResource("15") + +[node name="Drape6" type="Sprite2D" parent="Decorations/banners"] +position = Vector2(1733, -122) +texture = ExtResource("15") + +[node name="Drape8" type="Sprite2D" parent="Decorations/banners"] +position = Vector2(1650, -161) +texture = ExtResource("15") + +[node name="Drape9" type="Sprite2D" parent="Decorations/banners"] +position = Vector2(1278, -29) +scale = Vector2(-1, 1) +texture = ExtResource("15") + +[node name="Drape10" type="Sprite2D" parent="Decorations/banners"] +position = Vector2(1449, -110) +scale = Vector2(-1, 1) +texture = ExtResource("15") + +[node name="Banner" type="Sprite2D" parent="Decorations/banners"] +position = Vector2(796, -122) +texture = ExtResource("6") + +[node name="Banner2" type="Sprite2D" parent="Decorations/banners"] +position = Vector2(-12, -115) +rotation = 3.14159 +scale = Vector2(1, -1) +texture = ExtResource("6") + +[node name="Drape2" type="Sprite2D" parent="Decorations/banners"] +position = Vector2(-189, -61) +rotation = 3.14159 +scale = Vector2(1, -1) +texture = ExtResource("15") + +[node name="Drape5" type="Sprite2D" parent="Decorations/banners"] +position = Vector2(147, -231) +rotation = 3.14159 +scale = Vector2(0.960001, -1) +texture = ExtResource("15") + +[node name="Drape7" type="Sprite2D" parent="Decorations/banners"] +position = Vector2(67, -191) +rotation = 3.14159 +scale = Vector2(1, -1) +texture = ExtResource("15") + +[node name="Banner3" type="Sprite2D" parent="Decorations/banners"] +position = Vector2(1367, -38) +rotation = 3.14159 +scale = Vector2(1, -1) +texture = ExtResource("6") + +[node name="Banner4" type="Sprite2D" parent="Decorations/banners"] +position = Vector2(104, 579) +rotation = 3.14159 +scale = Vector2(1, -1) +texture = ExtResource("6") + +[node name="wall_skulls" type="Node2D" parent="Decorations"] + +[node name="WallSkull" type="Sprite2D" parent="Decorations/wall_skulls"] +position = Vector2(286, -174) +texture = ExtResource("2") + +[node name="WallSkull2" type="Sprite2D" parent="Decorations/wall_skulls"] +position = Vector2(1552, -123) +scale = Vector2(-1, 1) +texture = ExtResource("2") + +[node name="WallSkull3" type="Sprite2D" parent="Decorations/wall_skulls"] +position = Vector2(1552, -123) +scale = Vector2(-1, 1) +texture = ExtResource("2") + +[node name="Ambient" type="Node2D" parent="."] + +[node name="Node2D" type="Node2D" parent="Ambient"] + +[node name="InternalShadow10" parent="Ambient/Node2D" instance=ExtResource("14")] +position = Vector2(193, -89) +scale = Vector2(-1, 1) +color = Color(0.0705882, 0.0705882, 0.266667, 0.54902) +polygon = PackedVector2Array(1, -60, 28, -45, 19, -194, 1, -201) + +[node name="InternalShadow13" parent="Ambient/Node2D" instance=ExtResource("14")] +position = Vector2(1602, -26) +scale = Vector2(-1, 1) +color = Color(0.0705882, 0.0705882, 0.266667, 0.54902) +polygon = PackedVector2Array(1, -60, 28, -45, 19, -194, 1, -201) + +[node name="InternalShadow14" parent="Ambient/Node2D" instance=ExtResource("14")] +position = Vector2(770, 68) +scale = Vector2(-1, 1) +color = Color(0.0705882, 0.0705882, 0.266667, 0.54902) +polygon = PackedVector2Array(1, -60, 28, -45, 19, -194, 1, -201) + +[node name="InternalShadow11" parent="Ambient/Node2D" instance=ExtResource("14")] +position = Vector2(1150, 261) +scale = Vector2(-1, 1) +color = Color(0.0705882, 0.0705882, 0.266667, 0.54902) +polygon = PackedVector2Array(-2, -185, 91, -148, 113, -256, 0, -195) + +[node name="InternalShadow12" parent="Ambient/Node2D" instance=ExtResource("14")] +position = Vector2(892, 132) +scale = Vector2(-1, 1) +color = Color(0.0705882, 0.0705882, 0.266667, 0.54902) +polygon = PackedVector2Array(-2, -185, 91, -148, 113, -256, 0, -195) + +[node name="LightOccluder2D2" type="LightOccluder2D" parent="Ambient"] +show_behind_parent = true +occluder = SubResource("13") + +[node name="LightOccluder2D" type="LightOccluder2D" parent="Ambient"] +show_behind_parent = true +occluder = SubResource("1") + +[node name="LightOccluder2D" type="LightOccluder2D" parent="Ambient/LightOccluder2D"] +occluder = SubResource("18") + +[node name="PointLight2D" type="PointLight2D" parent="Ambient"] +light_mask = 2 +position = Vector2(175, 99) +scale = Vector2(0.908, 0.84) +color = Color(0.709804, 0.388235, 0.313726, 1) +shadow_enabled = true +shadow_filter = 1 +shadow_filter_smooth = 5.0 +texture = SubResource("12") + +[node name="Light2D9" type="PointLight2D" parent="Ambient"] +light_mask = 2 +position = Vector2(700, 490) +scale = Vector2(0.908, 0.84) +color = Color(0.709804, 0.388235, 0.313726, 1) +energy = 2.0 +shadow_enabled = true +shadow_filter = 1 +shadow_filter_smooth = 5.0 +texture = SubResource("12") + +[node name="Light2D3" type="PointLight2D" parent="Ambient"] +light_mask = 2 +position = Vector2(1134, 188) +scale = Vector2(0.908, 0.84) +color = Color(0.709804, 0.388235, 0.313726, 1) +energy = 1.8 +shadow_enabled = true +shadow_filter = 1 +shadow_filter_smooth = 5.0 +texture = SubResource("12") + +[node name="Light2D4" type="PointLight2D" parent="Ambient"] +light_mask = 2 +position = Vector2(529, 176) +scale = Vector2(0.908, 0.84) +color = Color(0.709804, 0.388235, 0.313726, 1) +energy = 1.8 +shadow_enabled = true +shadow_filter = 1 +shadow_filter_smooth = 5.0 +texture = SubResource("12") + +[node name="Light2D2" type="PointLight2D" parent="Ambient"] +light_mask = 2 +position = Vector2(384, 352) +scale = Vector2(1.056, 0.84) +color = Color(0.709804, 0.388235, 0.313726, 1) +energy = 2.0 +shadow_enabled = true +shadow_filter = 1 +shadow_filter_smooth = 5.0 +texture = SubResource("12") + +[node name="Light2D10" type="PointLight2D" parent="Ambient"] +light_mask = 2 +position = Vector2(29, 223) +scale = Vector2(1.056, 0.84) +color = Color(0.709804, 0.388235, 0.313726, 1) +energy = 2.0 +shadow_enabled = true +shadow_filter = 1 +shadow_filter_smooth = 5.0 +texture = SubResource("12") + +[node name="Light2D11" type="PointLight2D" parent="Ambient"] +light_mask = 2 +position = Vector2(208, 356) +rotation = 0.460767 +scale = Vector2(0.749244, 0.204) +color = Color(0.709804, 0.388235, 0.313726, 1) +shadow_enabled = true +shadow_filter = 1 +shadow_filter_smooth = 5.0 +texture = SubResource("12") + +[node name="Light2D16" type="PointLight2D" parent="Ambient"] +light_mask = 2 +position = Vector2(324, 90) +rotation = 0.460767 +scale = Vector2(0.462875, 0.114816) +color = Color(0.709804, 0.388235, 0.313726, 1) +shadow_enabled = true +shadow_filter = 1 +shadow_filter_smooth = 5.0 +texture = SubResource("12") + +[node name="Light2D20" type="PointLight2D" parent="Ambient"] +light_mask = 2 +position = Vector2(682, 658) +rotation = 0.460767 +scale = Vector2(0.462875, 0.114816) +color = Color(0.709804, 0.388235, 0.313726, 1) +shadow_enabled = true +shadow_filter = 1 +shadow_filter_smooth = 5.0 +texture = SubResource("12") + +[node name="Light2D21" type="PointLight2D" parent="Ambient"] +light_mask = 2 +position = Vector2(-35, 532) +rotation = -0.410152 +scale = Vector2(0.462875, 0.114816) +color = Color(0.709804, 0.388235, 0.313726, 1) +shadow_enabled = true +shadow_filter = 1 +shadow_filter_smooth = 5.0 +texture = SubResource("12") + +[node name="Light2D22" type="PointLight2D" parent="Ambient"] +light_mask = 2 +position = Vector2(1008, 538) +rotation = -0.410152 +scale = Vector2(0.462875, 0.114816) +color = Color(0.709804, 0.388235, 0.313726, 1) +shadow_enabled = true +shadow_filter = 1 +shadow_filter_smooth = 5.0 +texture = SubResource("12") + +[node name="Light2D23" type="PointLight2D" parent="Ambient"] +light_mask = 2 +position = Vector2(767, 576) +rotation = 0.410152 +scale = Vector2(0.462875, 0.114816) +color = Color(0.709804, 0.388235, 0.313726, 1) +shadow_enabled = true +shadow_filter = 1 +shadow_filter_smooth = 5.0 +texture = SubResource("12") + +[node name="Light2D17" type="PointLight2D" parent="Ambient"] +light_mask = 2 +position = Vector2(1374, 298) +rotation = 0.460767 +scale = Vector2(0.462875, 0.114816) +color = Color(0.709804, 0.388235, 0.313726, 1) +shadow_enabled = true +shadow_filter = 1 +shadow_filter_smooth = 5.0 +texture = SubResource("12") + +[node name="Light2D18" type="PointLight2D" parent="Ambient"] +light_mask = 2 +position = Vector2(623, 251) +rotation = 0.460767 +scale = Vector2(0.248158, 0.0972839) +color = Color(0.709804, 0.388235, 0.313726, 1) +shadow_enabled = true +shadow_filter = 1 +shadow_filter_smooth = 5.0 +texture = SubResource("12") + +[node name="Light2D19" type="PointLight2D" parent="Ambient"] +light_mask = 2 +position = Vector2(798, 224) +rotation = -0.523598 +scale = Vector2(-0.567691, -0.238339) +color = Color(0.709804, 0.388235, 0.313726, 1) +shadow_enabled = true +shadow_filter = 1 +shadow_filter_smooth = 5.0 +texture = SubResource("12") + +[node name="Light2D12" type="PointLight2D" parent="Ambient"] +light_mask = 2 +position = Vector2(648, 833) +rotation = -0.445059 +scale = Vector2(0.749244, 0.204) +color = Color(0.709804, 0.388235, 0.313726, 1) +shadow_enabled = true +shadow_filter = 1 +shadow_filter_smooth = 5.0 +texture = SubResource("12") + +[node name="Light2D14" type="PointLight2D" parent="Ambient"] +light_mask = 2 +position = Vector2(1135, 528) +rotation = -0.445059 +scale = Vector2(0.979784, 0.204) +color = Color(0.709804, 0.388235, 0.313726, 1) +shadow_enabled = true +shadow_filter = 1 +shadow_filter_smooth = 5.0 +texture = SubResource("12") + +[node name="Light2D15" type="PointLight2D" parent="Ambient"] +light_mask = 2 +position = Vector2(641, 313) +rotation = -0.445059 +scale = Vector2(0.815021, 0.090317) +color = Color(0.709804, 0.388235, 0.313726, 1) +shadow_enabled = true +shadow_filter = 1 +shadow_filter_smooth = 5.0 +texture = SubResource("12") + +[node name="Light2D13" type="PointLight2D" parent="Ambient"] +light_mask = 2 +position = Vector2(117, 837) +rotation = 0.462512 +scale = Vector2(0.749244, 0.204) +color = Color(0.709804, 0.388235, 0.313726, 1) +shadow_enabled = true +shadow_filter = 1 +shadow_filter_smooth = 5.0 +texture = SubResource("12") + +[node name="Light2D5" type="PointLight2D" parent="Ambient"] +light_mask = 2 +position = Vector2(576, 648) +scale = Vector2(1.056, 0.84) +color = Color(0.709804, 0.388235, 0.313726, 1) +energy = 2.0 +shadow_enabled = true +shadow_filter = 1 +shadow_filter_smooth = 5.0 +texture = SubResource("12") + +[node name="Light2D7" type="PointLight2D" parent="Ambient"] +light_mask = 2 +position = Vector2(832, 281) +scale = Vector2(1.056, 0.84) +color = Color(0.709804, 0.388235, 0.313726, 1) +energy = 2.0 +shadow_enabled = true +shadow_filter = 1 +shadow_filter_smooth = 5.0 +texture = SubResource("12") + +[node name="Light2D6" type="PointLight2D" parent="Ambient"] +light_mask = 2 +position = Vector2(385, 865) +scale = Vector2(1.718, 0.84) +color = Color(0.709804, 0.388235, 0.313726, 1) +energy = 2.0 +shadow_enabled = true +shadow_filter = 1 +shadow_filter_smooth = 5.0 +texture = SubResource("12") + +[node name="Light2D8" type="PointLight2D" parent="Ambient"] +light_mask = 2 +position = Vector2(1279, 319) +scale = Vector2(0.42775, 0.348) +color = Color(0.709804, 0.388235, 0.313726, 1) +energy = 2.0 +shadow_enabled = true +shadow_filter = 1 +shadow_filter_smooth = 5.0 +texture = SubResource("12") + +[node name="LightOccluder2D3" type="LightOccluder2D" parent="Ambient"] +occluder = SubResource("14") + +[node name="LightOccluder2D4" type="LightOccluder2D" parent="Ambient"] +occluder = SubResource("15") + +[node name="LightOccluder2D5" type="LightOccluder2D" parent="Ambient"] +occluder = SubResource("16") + +[node name="LightOccluder2D6" type="LightOccluder2D" parent="Ambient"] +occluder = SubResource("17") + +[node name="ExternalShadow1" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("21") +position = Vector2(-356, 114) +scale = Vector2(0.296875, 1) +color = Color(0.0705882, 0.0705882, 0.266667, 0.85098) +texture = ExtResource("13") +polygon = PackedVector2Array(-134.737, -130, 138.105, -87, 141.474, 81, -141.474, 46) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="ExternalShadow2" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("21") +position = Vector2(-164, 658) +scale = Vector2(0.296875, 1) +color = Color(0.0705882, 0.0705882, 0.266667, 0.85098) +texture = ExtResource("13") +polygon = PackedVector2Array(-134.737, -130, 138.105, -87, 141.474, 81, -141.474, 46) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="ExternalShadow3" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("21") +position = Vector2(-91, 826) +scale = Vector2(0.296875, 1) +color = Color(0.0705882, 0.0705882, 0.266667, 0.85098) +texture = ExtResource("13") +polygon = PackedVector2Array(-468.211, -178, 1788.63, 151, 1792, 221, -471.579, -97.0001) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="ExternalShadow4" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("21") +position = Vector2(-91, 826) +scale = Vector2(0.296875, 1) +color = Color(0.0705882, 0.0705882, 0.266667, 0.85098) +texture = ExtResource("13") +polygon = PackedVector2Array(1125.05, 197, 3546.95, -164, 3550.32, -89.0001, 1101.47, 275) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="ExternalShadow5" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("21") +position = Vector2(537, 452) +scale = Vector2(0.296875, 1) +color = Color(0.0705882, 0.0705882, 0.266667, 0.85098) +texture = ExtResource("13") +polygon = PackedVector2Array(1125.05, 197, 3546.95, -164, 3550.32, -89.0001, 1101.47, 275) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="ExternalShadow6" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("21") +position = Vector2(601, 594) +scale = Vector2(0.296875, 1) +color = Color(0.0705882, 0.0705882, 0.266667, 0.85098) +texture = ExtResource("13") +polygon = PackedVector2Array(1007.16, 114, 751.158, 74, 1293.47, 1, 1283.37, 74) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="ExternalShadow7" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("21") +position = Vector2(1172, 179) +scale = Vector2(0.296875, 1) +color = Color(0.0705882, 0.0705882, 0.266667, 0.85098) +texture = ExtResource("13") +polygon = PackedVector2Array(1007.16, 114, 751.158, 74, 1293.47, 1, 1283.37, 74) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="ExternalShadow8" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("21") +position = Vector2(-297, 20) +scale = Vector2(0.296875, 1) +color = Color(0.0705882, 0.0705882, 0.266667, 0.85098) +texture = ExtResource("13") +polygon = PackedVector2Array(-124.631, -130, 138.105, -87, 141.474, -5.00001, -134.737, -51) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="ExternalShadow9" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("21") +position = Vector2(1180, 57) +scale = Vector2(0.296875, 1) +color = Color(0.0705882, 0.0705882, 0.266667, 0.85098) +texture = ExtResource("13") +polygon = PackedVector2Array(-124.631, -130, 138.105, -87, 141.474, -5.00001, -134.737, -51) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="ExternalShadow10" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("21") +position = Vector2(1828, -40) +scale = Vector2(-0.297, 1) +color = Color(0.0705882, 0.0705882, 0.266667, 0.85098) +texture = ExtResource("13") +polygon = PackedVector2Array(-124.631, -130, 138.105, -87, 141.474, -5.00001, -134.737, -51) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="ExternalShadow11" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("21") +position = Vector2(864, -73) +scale = Vector2(-0.297, 1) +color = Color(0.0705882, 0.0705882, 0.266667, 0.85098) +texture = ExtResource("13") +polygon = PackedVector2Array(-124.631, -130, 138.105, -87, 141.474, -5.00001, -134.737, -51) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="ExternalShadow12" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("21") +position = Vector2(-291, 209) +scale = Vector2(0.296875, 1) +color = Color(0.0705882, 0.0705882, 0.266667, 0.85098) +texture = ExtResource("13") +polygon = PackedVector2Array(-229.053, -135, 582.737, -16, 592.842, 57, -192, -65) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="ExternalShadow13" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("21") +position = Vector2(1887, 52) +scale = Vector2(-0.297, 1) +color = Color(0.0705882, 0.0705882, 0.266667, 0.85098) +texture = ExtResource("13") +polygon = PackedVector2Array(-134.737, -130, 138.105, -87, 141.474, 81, -141.474, 46) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="ExternalShadow14" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("21") +position = Vector2(927, 20) +scale = Vector2(-0.297, 1) +color = Color(0.0705882, 0.0705882, 0.266667, 0.85098) +texture = ExtResource("13") +polygon = PackedVector2Array(-134.737, -130, 138.105, -87, 131.313, 0, -144.782, -25) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="ExternalShadow15" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("21") +position = Vector2(1820, 152) +scale = Vector2(-0.297, 1) +color = Color(0.0705882, 0.0705882, 0.266667, 0.85098) +texture = ExtResource("13") +polygon = PackedVector2Array(-360.27, -159, 1164.98, 67, 1151.51, 140, -360.27, -65) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="ExternalShadow16" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("21") +position = Vector2(482, -17) +scale = Vector2(-0.297, 1) +color = Color(0.0705882, 0.0705882, 0.266667, 0.85098) +texture = ExtResource("13") +polygon = PackedVector2Array(-134.737, -130, 138.105, -87, 141.474, 81, -141.474, 46) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="ExternalShadow17" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("21") +position = Vector2(415, 83) +scale = Vector2(-0.297, 1) +color = Color(0.0705882, 0.0705882, 0.266667, 0.85098) +texture = ExtResource("13") +polygon = PackedVector2Array(-168.351, -130, 353.535, -51, 114.478, -22, -191.92, -62) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="ExternalShadow18" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("21") +position = Vector2(36, 371) +scale = Vector2(0.296875, 1) +color = Color(0.0705882, 0.0705882, 0.266667, 0.85098) +texture = ExtResource("13") +polygon = PackedVector2Array(-313.263, -149, 1020.63, 52, 700.632, 77, -299.789, -81) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="TopLight1" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("22") +position = Vector2(-255, -132) +scale = Vector2(0.296875, 1) +color = Color(1, 0.584314, 0, 0.341176) +texture = ExtResource("13") +polygon = PackedVector2Array(1734.74, -189, -141.474, 94, -427.789, 32, 1232.84, -201) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="TopLight10" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("22") +position = Vector2(1213, -100) +scale = Vector2(0.296875, 1) +color = Color(1, 0.584314, 0, 0.341176) +texture = ExtResource("13") +polygon = PackedVector2Array(1593.26, -166, -141.474, 94, -282.947, 27, 1266.53, -203) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="TopLight3" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("22") +position = Vector2(-740, 171) +scale = Vector2(0.296875, 1) +color = Color(1, 0.584314, 0, 0.341176) +texture = ExtResource("13") +polygon = PackedVector2Array(1667.37, -173, 1397.89, -137, 1162.11, -177, 1397.89, -208) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="TopLight5" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("22") +position = Vector2(-550, 331) +scale = Vector2(0.296875, 1) +color = Color(1, 0.584314, 0, 0.341176) +texture = ExtResource("13") +polygon = PackedVector2Array(1677.47, -178, 1414.74, -136, 1162.11, -177, 1397.89, -213) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="TopLight16" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("22") +position = Vector2(-495, 904) +scale = Vector2(0.296875, 1) +color = Color(1, 0.584314, 0, 0.341176) +texture = ExtResource("13") +polygon = PackedVector2Array(1370.95, -251, 2506.11, -78, 1980.63, -99, 1313.68, -229) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="TopLight8" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("22") +position = Vector2(281, 43) +scale = Vector2(0.296875, 1) +color = Color(1, 0.584314, 0, 0.341176) +texture = ExtResource("13") +polygon = PackedVector2Array(1677.47, -178, 1414.74, -136, 1162.11, -177, 1397.89, -213) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="TopLight15" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("22") +position = Vector2(77, 202) +scale = Vector2(0.296875, 1) +color = Color(1, 0.584314, 0, 0.341176) +texture = ExtResource("13") +polygon = PackedVector2Array(1438.32, -212, 1714.53, -172, 1448.42, -139, 1219.37, -181) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="TopLight4" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("22") +position = Vector2(26, 43) +scale = Vector2(0.296875, 1) +color = Color(1, 0.584314, 0, 0.341176) +texture = ExtResource("13") +polygon = PackedVector2Array(1445.05, -134, 1182.32, -172, 1434.95, -213, 1697.68, -177) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="TopLight7" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("22") +position = Vector2(468, 75) +scale = Vector2(0.296875, 1) +color = Color(1, 0.584314, 0, 0.341176) +texture = ExtResource("13") +polygon = PackedVector2Array(1445.05, -134, 1182.32, -172, 1434.95, -213, 1697.68, -177) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="TopLight11" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("22") +position = Vector2(1432, 107) +scale = Vector2(0.296875, 1) +color = Color(1, 0.584314, 0, 0.341176) +texture = ExtResource("13") +polygon = PackedVector2Array(1445.05, -134, 1182.32, -172, 1434.95, -213, 1697.68, -177) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="TopLight2" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("22") +position = Vector2(209, -354) +scale = Vector2(0.296875, 1) +color = Color(1, 0.584314, 0, 0.341176) +texture = ExtResource("13") +polygon = PackedVector2Array(673.684, 178, -148.211, 59, -60.6316, -12, 1034.11, 114) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="TopLight9" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("22") +position = Vector2(1621, -289) +scale = Vector2(0.296875, 1) +color = Color(1, 0.584314, 0, 0.341176) +texture = ExtResource("13") +polygon = PackedVector2Array(673.684, 178, -148.211, 59, -60.6316, -12, 1034.11, 114) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="TopLight6" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("22") +position = Vector2(721, -288) +scale = Vector2(0.296875, 1) +color = Color(1, 0.584314, 0, 0.341176) +texture = ExtResource("13") +polygon = PackedVector2Array(414.316, 138, -124.632, 59, 154.947, 16, 683.79, 92) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="TopLight13" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("22") +position = Vector2(-115, 448) +scale = Vector2(0.296875, 1) +color = Color(1, 0.584314, 0, 0.341176) +texture = ExtResource("13") +polygon = PackedVector2Array(730.947, 18, -80.8421, 136, -444.632, 92, 410.947, -29) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="TopLight14" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("22") +position = Vector2(77, 419) +scale = Vector2(0.296875, 1) +color = Color(1, 0.584314, 0, 0.341176) +texture = ExtResource("13") +polygon = PackedVector2Array(468.211, 51, -67.3684, 133, -60.6316, 57, 188.632, 0.999969) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="TopLight12" type="Polygon2D" parent="Ambient"] +light_mask = 512 +material = SubResource("22") +position = Vector2(1042, -63) +scale = Vector2(0.296875, 1) +color = Color(1, 0.584314, 0, 0.341176) +texture = ExtResource("13") +polygon = PackedVector2Array(414.316, 138, -124.632, 59, 154.947, 16, 683.79, 92) +uv = PackedVector2Array(-30.3157, -2, 272.842, -2, 273, 299, -37.0526, 297) + +[node name="CanvasModulate" type="CanvasModulate" parent="."] +show_behind_parent = true +light_mask = 0 +color = Color(0.466667, 0.635294, 0.92549, 1) + +[node name="Crows" type="Node2D" parent="."] + +[node name="CrowSleep" type="AnimatedSprite2D" parent="Crows"] +material = SubResource("41") +position = Vector2(445, -129) +sprite_frames = SubResource("40") +animation = &"sleep" +autoplay = "sleep" +frame = 1 + +[node name="CrowSleep2" type="AnimatedSprite2D" parent="Crows"] +material = SubResource("42") +position = Vector2(108, 481) +sprite_frames = SubResource("40") +animation = &"sleep" +autoplay = "sleep" +frame = 1 +flip_h = true + +[node name="CrowLook" type="AnimatedSprite2D" parent="Crows"] +position = Vector2(-168, -145) +sprite_frames = SubResource("91") +animation = &"looking" +autoplay = "looking" +frame = 7 +flip_h = true + +[node name="CrowLook2" type="AnimatedSprite2D" parent="Crows"] +position = Vector2(1782, 35) +sprite_frames = SubResource("91") +animation = &"looking" +autoplay = "looking" +frame = 7 +flip_h = true + +[node name="CrowLook3" type="AnimatedSprite2D" parent="Crows"] +position = Vector2(1024, 78) +sprite_frames = SubResource("91") +animation = &"looking" +autoplay = "looking" +frame = 7 diff --git a/2d/layered_tile_maps/isometric/icon.webp b/2d/layered_tile_maps/isometric/icon.webp new file mode 100644 index 0000000..bf6f2d0 Binary files /dev/null and b/2d/layered_tile_maps/isometric/icon.webp differ diff --git a/2d/layered_tile_maps/isometric/icon.webp.import b/2d/layered_tile_maps/isometric/icon.webp.import new file mode 100644 index 0000000..741ff35 --- /dev/null +++ b/2d/layered_tile_maps/isometric/icon.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dwrfxefhjkitp" +path="res://.godot/imported/icon.webp-e94f9a68b0f625a567a797079e4d325f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.webp" +dest_files=["res://.godot/imported/icon.webp-e94f9a68b0f625a567a797079e4d325f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/isometric/player/goblin.gd b/2d/layered_tile_maps/isometric/player/goblin.gd new file mode 100644 index 0000000..c6f3f14 --- /dev/null +++ b/2d/layered_tile_maps/isometric/player/goblin.gd @@ -0,0 +1,56 @@ +extends CharacterBody2D + +const MOTION_SPEED = 160 # Pixels/second. + +var last_direction = Vector2(1, 0) + +var anim_directions = { + "idle": [ # list of [animation name, horizontal flip] + ["side_right_idle", false], + ["45front_right_idle", false], + ["front_idle", false], + ["45front_left_idle", false], + ["side_left_idle", false], + ["45back_left_idle", false], + ["back_idle", false], + ["45back_right_idle", false], + ], + + "walk": [ + ["side_right_walk", false], + ["45front_right_walk", false], + ["front_walk", false], + ["45front_left_walk", false], + ["side_left_walk", false], + ["45back_left_walk", false], + ["back_walk", false], + ["45back_right_walk", false], + ], +} + + +func _physics_process(_delta): + var motion = Vector2() + motion.x = Input.get_action_strength("move_right") - Input.get_action_strength("move_left") + motion.y = Input.get_action_strength("move_down") - Input.get_action_strength("move_up") + motion.y /= 2 + motion = motion.normalized() * MOTION_SPEED + #warning-ignore:return_value_discarded + set_velocity(motion) + move_and_slide() + var dir = velocity + + if dir.length() > 0: + last_direction = dir + update_animation("walk") + else: + update_animation("idle") + + +func update_animation(anim_set): + + var angle = rad_to_deg(last_direction.angle()) + 22.5 + var slice_dir = floor(angle / 45) + + $Sprite2D.play(anim_directions[anim_set][slice_dir][0]) + $Sprite2D.flip_h = anim_directions[anim_set][slice_dir][1] diff --git a/2d/layered_tile_maps/isometric/player/goblin.png b/2d/layered_tile_maps/isometric/player/goblin.png new file mode 100644 index 0000000..88f0c69 Binary files /dev/null and b/2d/layered_tile_maps/isometric/player/goblin.png differ diff --git a/2d/layered_tile_maps/isometric/player/goblin.png.import b/2d/layered_tile_maps/isometric/player/goblin.png.import new file mode 100644 index 0000000..3446fac --- /dev/null +++ b/2d/layered_tile_maps/isometric/player/goblin.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dpwpop61vufvt" +path="res://.godot/imported/goblin.png-32452b37152c86975cc3bde34afb02b5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://player/goblin.png" +dest_files=["res://.godot/imported/goblin.png-32452b37152c86975cc3bde34afb02b5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=1.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/isometric/player/goblin.tscn b/2d/layered_tile_maps/isometric/player/goblin.tscn new file mode 100644 index 0000000..0b386ad --- /dev/null +++ b/2d/layered_tile_maps/isometric/player/goblin.tscn @@ -0,0 +1,1925 @@ +[gd_scene load_steps=264 format=3 uid="uid://bqpkxht3mx8l8"] + +[ext_resource type="Texture2D" uid="uid://dpwpop61vufvt" path="res://player/goblin.png" id="1"] +[ext_resource type="Script" path="res://player/goblin.gd" id="2"] + +[sub_resource type="Gradient" id="662"] +offsets = PackedFloat32Array(0.00558659, 0.441341, 0.659218) +colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) + +[sub_resource type="GradientTexture2D" id="663"] +gradient = SubResource("662") +fill = 1 +fill_from = Vector2(0.5, 0.5) + +[sub_resource type="AtlasTexture" id="261"] +atlas = ExtResource("1") +region = Rect2(0, 768, 128, 128) + +[sub_resource type="AtlasTexture" id="262"] +atlas = ExtResource("1") +region = Rect2(128, 768, 128, 128) + +[sub_resource type="AtlasTexture" id="263"] +atlas = ExtResource("1") +region = Rect2(256, 768, 128, 128) + +[sub_resource type="AtlasTexture" id="264"] +atlas = ExtResource("1") +region = Rect2(384, 768, 128, 128) + +[sub_resource type="AtlasTexture" id="265"] +atlas = ExtResource("1") +region = Rect2(512, 768, 128, 128) + +[sub_resource type="AtlasTexture" id="266"] +atlas = ExtResource("1") +region = Rect2(640, 768, 128, 128) + +[sub_resource type="AtlasTexture" id="267"] +atlas = ExtResource("1") +region = Rect2(768, 768, 128, 128) + +[sub_resource type="AtlasTexture" id="268"] +atlas = ExtResource("1") +region = Rect2(896, 768, 128, 128) + +[sub_resource type="AtlasTexture" id="269"] +atlas = ExtResource("1") +region = Rect2(1024, 768, 128, 128) + +[sub_resource type="AtlasTexture" id="270"] +atlas = ExtResource("1") +region = Rect2(1152, 768, 128, 128) + +[sub_resource type="AtlasTexture" id="271"] +atlas = ExtResource("1") +region = Rect2(1280, 768, 128, 128) + +[sub_resource type="AtlasTexture" id="272"] +atlas = ExtResource("1") +region = Rect2(1408, 768, 128, 128) + +[sub_resource type="AtlasTexture" id="273"] +atlas = ExtResource("1") +region = Rect2(1536, 768, 128, 128) + +[sub_resource type="AtlasTexture" id="274"] +atlas = ExtResource("1") +region = Rect2(1664, 768, 128, 128) + +[sub_resource type="AtlasTexture" id="275"] +atlas = ExtResource("1") +region = Rect2(1792, 768, 128, 128) + +[sub_resource type="AtlasTexture" id="276"] +atlas = ExtResource("1") +region = Rect2(1920, 768, 128, 128) + +[sub_resource type="AtlasTexture" id="277"] +atlas = ExtResource("1") +region = Rect2(0, 896, 128, 128) + +[sub_resource type="AtlasTexture" id="278"] +atlas = ExtResource("1") +region = Rect2(128, 896, 128, 128) + +[sub_resource type="AtlasTexture" id="279"] +atlas = ExtResource("1") +region = Rect2(256, 896, 128, 128) + +[sub_resource type="AtlasTexture" id="280"] +atlas = ExtResource("1") +region = Rect2(384, 896, 128, 128) + +[sub_resource type="AtlasTexture" id="281"] +atlas = ExtResource("1") +region = Rect2(512, 896, 128, 128) + +[sub_resource type="AtlasTexture" id="282"] +atlas = ExtResource("1") +region = Rect2(640, 896, 128, 128) + +[sub_resource type="AtlasTexture" id="283"] +atlas = ExtResource("1") +region = Rect2(768, 896, 128, 128) + +[sub_resource type="AtlasTexture" id="284"] +atlas = ExtResource("1") +region = Rect2(896, 896, 128, 128) + +[sub_resource type="AtlasTexture" id="285"] +atlas = ExtResource("1") +region = Rect2(1024, 896, 128, 128) + +[sub_resource type="AtlasTexture" id="286"] +atlas = ExtResource("1") +region = Rect2(1152, 896, 128, 128) + +[sub_resource type="AtlasTexture" id="287"] +atlas = ExtResource("1") +region = Rect2(1280, 896, 128, 128) + +[sub_resource type="AtlasTexture" id="288"] +atlas = ExtResource("1") +region = Rect2(1408, 896, 128, 128) + +[sub_resource type="AtlasTexture" id="289"] +atlas = ExtResource("1") +region = Rect2(1536, 896, 128, 128) + +[sub_resource type="AtlasTexture" id="290"] +atlas = ExtResource("1") +region = Rect2(1664, 896, 128, 128) + +[sub_resource type="AtlasTexture" id="291"] +atlas = ExtResource("1") +region = Rect2(1792, 896, 128, 128) + +[sub_resource type="AtlasTexture" id="292"] +atlas = ExtResource("1") +region = Rect2(1920, 896, 128, 128) + +[sub_resource type="AtlasTexture" id="293"] +atlas = ExtResource("1") +region = Rect2(0, 1280, 128, 128) + +[sub_resource type="AtlasTexture" id="294"] +atlas = ExtResource("1") +region = Rect2(128, 1280, 128, 128) + +[sub_resource type="AtlasTexture" id="295"] +atlas = ExtResource("1") +region = Rect2(256, 1280, 128, 128) + +[sub_resource type="AtlasTexture" id="296"] +atlas = ExtResource("1") +region = Rect2(384, 1280, 128, 128) + +[sub_resource type="AtlasTexture" id="297"] +atlas = ExtResource("1") +region = Rect2(512, 1280, 128, 128) + +[sub_resource type="AtlasTexture" id="298"] +atlas = ExtResource("1") +region = Rect2(640, 1280, 128, 128) + +[sub_resource type="AtlasTexture" id="299"] +atlas = ExtResource("1") +region = Rect2(768, 1280, 128, 128) + +[sub_resource type="AtlasTexture" id="300"] +atlas = ExtResource("1") +region = Rect2(896, 1280, 128, 128) + +[sub_resource type="AtlasTexture" id="301"] +atlas = ExtResource("1") +region = Rect2(1024, 1280, 128, 128) + +[sub_resource type="AtlasTexture" id="302"] +atlas = ExtResource("1") +region = Rect2(1152, 1280, 128, 128) + +[sub_resource type="AtlasTexture" id="303"] +atlas = ExtResource("1") +region = Rect2(1280, 1280, 128, 128) + +[sub_resource type="AtlasTexture" id="304"] +atlas = ExtResource("1") +region = Rect2(1408, 1280, 128, 128) + +[sub_resource type="AtlasTexture" id="305"] +atlas = ExtResource("1") +region = Rect2(1536, 1280, 128, 128) + +[sub_resource type="AtlasTexture" id="306"] +atlas = ExtResource("1") +region = Rect2(1664, 1280, 128, 128) + +[sub_resource type="AtlasTexture" id="307"] +atlas = ExtResource("1") +region = Rect2(1792, 1280, 128, 128) + +[sub_resource type="AtlasTexture" id="308"] +atlas = ExtResource("1") +region = Rect2(1920, 1280, 128, 128) + +[sub_resource type="AtlasTexture" id="309"] +atlas = ExtResource("1") +region = Rect2(0, 1408, 128, 128) + +[sub_resource type="AtlasTexture" id="310"] +atlas = ExtResource("1") +region = Rect2(128, 1408, 128, 128) + +[sub_resource type="AtlasTexture" id="311"] +atlas = ExtResource("1") +region = Rect2(256, 1408, 128, 128) + +[sub_resource type="AtlasTexture" id="312"] +atlas = ExtResource("1") +region = Rect2(384, 1408, 128, 128) + +[sub_resource type="AtlasTexture" id="313"] +atlas = ExtResource("1") +region = Rect2(512, 1408, 128, 128) + +[sub_resource type="AtlasTexture" id="314"] +atlas = ExtResource("1") +region = Rect2(640, 1408, 128, 128) + +[sub_resource type="AtlasTexture" id="315"] +atlas = ExtResource("1") +region = Rect2(768, 1408, 128, 128) + +[sub_resource type="AtlasTexture" id="316"] +atlas = ExtResource("1") +region = Rect2(896, 1408, 128, 128) + +[sub_resource type="AtlasTexture" id="317"] +atlas = ExtResource("1") +region = Rect2(1024, 1408, 128, 128) + +[sub_resource type="AtlasTexture" id="318"] +atlas = ExtResource("1") +region = Rect2(1152, 1408, 128, 128) + +[sub_resource type="AtlasTexture" id="319"] +atlas = ExtResource("1") +region = Rect2(1280, 1408, 128, 128) + +[sub_resource type="AtlasTexture" id="320"] +atlas = ExtResource("1") +region = Rect2(1408, 1408, 128, 128) + +[sub_resource type="AtlasTexture" id="321"] +atlas = ExtResource("1") +region = Rect2(1536, 1408, 128, 128) + +[sub_resource type="AtlasTexture" id="322"] +atlas = ExtResource("1") +region = Rect2(1664, 1408, 128, 128) + +[sub_resource type="AtlasTexture" id="323"] +atlas = ExtResource("1") +region = Rect2(1792, 1408, 128, 128) + +[sub_resource type="AtlasTexture" id="324"] +atlas = ExtResource("1") +region = Rect2(1920, 1408, 128, 128) + +[sub_resource type="AtlasTexture" id="325"] +atlas = ExtResource("1") +region = Rect2(0, 256, 128, 128) + +[sub_resource type="AtlasTexture" id="326"] +atlas = ExtResource("1") +region = Rect2(128, 256, 128, 128) + +[sub_resource type="AtlasTexture" id="327"] +atlas = ExtResource("1") +region = Rect2(256, 256, 128, 128) + +[sub_resource type="AtlasTexture" id="328"] +atlas = ExtResource("1") +region = Rect2(384, 256, 128, 128) + +[sub_resource type="AtlasTexture" id="329"] +atlas = ExtResource("1") +region = Rect2(512, 256, 128, 128) + +[sub_resource type="AtlasTexture" id="330"] +atlas = ExtResource("1") +region = Rect2(640, 256, 128, 128) + +[sub_resource type="AtlasTexture" id="331"] +atlas = ExtResource("1") +region = Rect2(768, 256, 128, 128) + +[sub_resource type="AtlasTexture" id="332"] +atlas = ExtResource("1") +region = Rect2(896, 256, 128, 128) + +[sub_resource type="AtlasTexture" id="333"] +atlas = ExtResource("1") +region = Rect2(1024, 256, 128, 128) + +[sub_resource type="AtlasTexture" id="334"] +atlas = ExtResource("1") +region = Rect2(1152, 256, 128, 128) + +[sub_resource type="AtlasTexture" id="335"] +atlas = ExtResource("1") +region = Rect2(1280, 256, 128, 128) + +[sub_resource type="AtlasTexture" id="336"] +atlas = ExtResource("1") +region = Rect2(1408, 256, 128, 128) + +[sub_resource type="AtlasTexture" id="337"] +atlas = ExtResource("1") +region = Rect2(1536, 256, 128, 128) + +[sub_resource type="AtlasTexture" id="338"] +atlas = ExtResource("1") +region = Rect2(1664, 256, 128, 128) + +[sub_resource type="AtlasTexture" id="339"] +atlas = ExtResource("1") +region = Rect2(1792, 256, 128, 128) + +[sub_resource type="AtlasTexture" id="340"] +atlas = ExtResource("1") +region = Rect2(1920, 256, 128, 128) + +[sub_resource type="AtlasTexture" id="341"] +atlas = ExtResource("1") +region = Rect2(0, 384, 128, 128) + +[sub_resource type="AtlasTexture" id="342"] +atlas = ExtResource("1") +region = Rect2(128, 384, 128, 128) + +[sub_resource type="AtlasTexture" id="343"] +atlas = ExtResource("1") +region = Rect2(256, 384, 128, 128) + +[sub_resource type="AtlasTexture" id="344"] +atlas = ExtResource("1") +region = Rect2(384, 384, 128, 128) + +[sub_resource type="AtlasTexture" id="345"] +atlas = ExtResource("1") +region = Rect2(512, 384, 128, 128) + +[sub_resource type="AtlasTexture" id="346"] +atlas = ExtResource("1") +region = Rect2(640, 384, 128, 128) + +[sub_resource type="AtlasTexture" id="347"] +atlas = ExtResource("1") +region = Rect2(768, 384, 128, 128) + +[sub_resource type="AtlasTexture" id="348"] +atlas = ExtResource("1") +region = Rect2(896, 384, 128, 128) + +[sub_resource type="AtlasTexture" id="349"] +atlas = ExtResource("1") +region = Rect2(1024, 384, 128, 128) + +[sub_resource type="AtlasTexture" id="350"] +atlas = ExtResource("1") +region = Rect2(1152, 384, 128, 128) + +[sub_resource type="AtlasTexture" id="351"] +atlas = ExtResource("1") +region = Rect2(1280, 384, 128, 128) + +[sub_resource type="AtlasTexture" id="352"] +atlas = ExtResource("1") +region = Rect2(1408, 384, 128, 128) + +[sub_resource type="AtlasTexture" id="353"] +atlas = ExtResource("1") +region = Rect2(1536, 384, 128, 128) + +[sub_resource type="AtlasTexture" id="354"] +atlas = ExtResource("1") +region = Rect2(1664, 384, 128, 128) + +[sub_resource type="AtlasTexture" id="355"] +atlas = ExtResource("1") +region = Rect2(1792, 384, 128, 128) + +[sub_resource type="AtlasTexture" id="356"] +atlas = ExtResource("1") +region = Rect2(1920, 384, 128, 128) + +[sub_resource type="AtlasTexture" id="357"] +atlas = ExtResource("1") +region = Rect2(0, 1792, 128, 128) + +[sub_resource type="AtlasTexture" id="358"] +atlas = ExtResource("1") +region = Rect2(128, 1792, 128, 128) + +[sub_resource type="AtlasTexture" id="359"] +atlas = ExtResource("1") +region = Rect2(256, 1792, 128, 128) + +[sub_resource type="AtlasTexture" id="360"] +atlas = ExtResource("1") +region = Rect2(384, 1792, 128, 128) + +[sub_resource type="AtlasTexture" id="361"] +atlas = ExtResource("1") +region = Rect2(512, 1792, 128, 128) + +[sub_resource type="AtlasTexture" id="362"] +atlas = ExtResource("1") +region = Rect2(640, 1792, 128, 128) + +[sub_resource type="AtlasTexture" id="363"] +atlas = ExtResource("1") +region = Rect2(768, 1792, 128, 128) + +[sub_resource type="AtlasTexture" id="364"] +atlas = ExtResource("1") +region = Rect2(896, 1792, 128, 128) + +[sub_resource type="AtlasTexture" id="365"] +atlas = ExtResource("1") +region = Rect2(1024, 1792, 128, 128) + +[sub_resource type="AtlasTexture" id="366"] +atlas = ExtResource("1") +region = Rect2(1152, 1792, 128, 128) + +[sub_resource type="AtlasTexture" id="367"] +atlas = ExtResource("1") +region = Rect2(1280, 1792, 128, 128) + +[sub_resource type="AtlasTexture" id="368"] +atlas = ExtResource("1") +region = Rect2(1408, 1792, 128, 128) + +[sub_resource type="AtlasTexture" id="369"] +atlas = ExtResource("1") +region = Rect2(1536, 1792, 128, 128) + +[sub_resource type="AtlasTexture" id="370"] +atlas = ExtResource("1") +region = Rect2(1664, 1792, 128, 128) + +[sub_resource type="AtlasTexture" id="371"] +atlas = ExtResource("1") +region = Rect2(1792, 1792, 128, 128) + +[sub_resource type="AtlasTexture" id="372"] +atlas = ExtResource("1") +region = Rect2(1920, 1792, 128, 128) + +[sub_resource type="AtlasTexture" id="373"] +atlas = ExtResource("1") +region = Rect2(0, 1920, 128, 128) + +[sub_resource type="AtlasTexture" id="374"] +atlas = ExtResource("1") +region = Rect2(128, 1920, 128, 128) + +[sub_resource type="AtlasTexture" id="375"] +atlas = ExtResource("1") +region = Rect2(256, 1920, 128, 128) + +[sub_resource type="AtlasTexture" id="376"] +atlas = ExtResource("1") +region = Rect2(384, 1920, 128, 128) + +[sub_resource type="AtlasTexture" id="377"] +atlas = ExtResource("1") +region = Rect2(512, 1920, 128, 128) + +[sub_resource type="AtlasTexture" id="378"] +atlas = ExtResource("1") +region = Rect2(640, 1920, 128, 128) + +[sub_resource type="AtlasTexture" id="379"] +atlas = ExtResource("1") +region = Rect2(768, 1920, 128, 128) + +[sub_resource type="AtlasTexture" id="380"] +atlas = ExtResource("1") +region = Rect2(896, 1920, 128, 128) + +[sub_resource type="AtlasTexture" id="381"] +atlas = ExtResource("1") +region = Rect2(1024, 1920, 128, 128) + +[sub_resource type="AtlasTexture" id="382"] +atlas = ExtResource("1") +region = Rect2(1152, 1920, 128, 128) + +[sub_resource type="AtlasTexture" id="383"] +atlas = ExtResource("1") +region = Rect2(1280, 1920, 128, 128) + +[sub_resource type="AtlasTexture" id="384"] +atlas = ExtResource("1") +region = Rect2(1408, 1920, 128, 128) + +[sub_resource type="AtlasTexture" id="385"] +atlas = ExtResource("1") +region = Rect2(1536, 1920, 128, 128) + +[sub_resource type="AtlasTexture" id="386"] +atlas = ExtResource("1") +region = Rect2(1664, 1920, 128, 128) + +[sub_resource type="AtlasTexture" id="387"] +atlas = ExtResource("1") +region = Rect2(1792, 1920, 128, 128) + +[sub_resource type="AtlasTexture" id="388"] +atlas = ExtResource("1") +region = Rect2(1920, 1920, 128, 128) + +[sub_resource type="AtlasTexture" id="597"] +atlas = ExtResource("1") +region = Rect2(0, 1024, 128, 128) + +[sub_resource type="AtlasTexture" id="598"] +atlas = ExtResource("1") +region = Rect2(128, 1024, 128, 128) + +[sub_resource type="AtlasTexture" id="599"] +atlas = ExtResource("1") +region = Rect2(256, 1024, 128, 128) + +[sub_resource type="AtlasTexture" id="600"] +atlas = ExtResource("1") +region = Rect2(384, 1024, 128, 128) + +[sub_resource type="AtlasTexture" id="601"] +atlas = ExtResource("1") +region = Rect2(512, 1024, 128, 128) + +[sub_resource type="AtlasTexture" id="602"] +atlas = ExtResource("1") +region = Rect2(640, 1024, 128, 128) + +[sub_resource type="AtlasTexture" id="603"] +atlas = ExtResource("1") +region = Rect2(768, 1024, 128, 128) + +[sub_resource type="AtlasTexture" id="604"] +atlas = ExtResource("1") +region = Rect2(896, 1024, 128, 128) + +[sub_resource type="AtlasTexture" id="605"] +atlas = ExtResource("1") +region = Rect2(1024, 1024, 128, 128) + +[sub_resource type="AtlasTexture" id="606"] +atlas = ExtResource("1") +region = Rect2(1152, 1024, 128, 128) + +[sub_resource type="AtlasTexture" id="607"] +atlas = ExtResource("1") +region = Rect2(1280, 1024, 128, 128) + +[sub_resource type="AtlasTexture" id="608"] +atlas = ExtResource("1") +region = Rect2(1408, 1024, 128, 128) + +[sub_resource type="AtlasTexture" id="609"] +atlas = ExtResource("1") +region = Rect2(1536, 1024, 128, 128) + +[sub_resource type="AtlasTexture" id="610"] +atlas = ExtResource("1") +region = Rect2(1664, 1024, 128, 128) + +[sub_resource type="AtlasTexture" id="611"] +atlas = ExtResource("1") +region = Rect2(1792, 1024, 128, 128) + +[sub_resource type="AtlasTexture" id="612"] +atlas = ExtResource("1") +region = Rect2(1920, 1024, 128, 128) + +[sub_resource type="AtlasTexture" id="613"] +atlas = ExtResource("1") +region = Rect2(0, 1152, 128, 128) + +[sub_resource type="AtlasTexture" id="614"] +atlas = ExtResource("1") +region = Rect2(128, 1152, 128, 128) + +[sub_resource type="AtlasTexture" id="615"] +atlas = ExtResource("1") +region = Rect2(256, 1152, 128, 128) + +[sub_resource type="AtlasTexture" id="616"] +atlas = ExtResource("1") +region = Rect2(384, 1152, 128, 128) + +[sub_resource type="AtlasTexture" id="617"] +atlas = ExtResource("1") +region = Rect2(512, 1152, 128, 128) + +[sub_resource type="AtlasTexture" id="618"] +atlas = ExtResource("1") +region = Rect2(640, 1152, 128, 128) + +[sub_resource type="AtlasTexture" id="619"] +atlas = ExtResource("1") +region = Rect2(768, 1152, 128, 128) + +[sub_resource type="AtlasTexture" id="620"] +atlas = ExtResource("1") +region = Rect2(896, 1152, 128, 128) + +[sub_resource type="AtlasTexture" id="621"] +atlas = ExtResource("1") +region = Rect2(1024, 1152, 128, 128) + +[sub_resource type="AtlasTexture" id="622"] +atlas = ExtResource("1") +region = Rect2(1152, 1152, 128, 128) + +[sub_resource type="AtlasTexture" id="623"] +atlas = ExtResource("1") +region = Rect2(1280, 1152, 128, 128) + +[sub_resource type="AtlasTexture" id="624"] +atlas = ExtResource("1") +region = Rect2(1408, 1152, 128, 128) + +[sub_resource type="AtlasTexture" id="625"] +atlas = ExtResource("1") +region = Rect2(1536, 1152, 128, 128) + +[sub_resource type="AtlasTexture" id="626"] +atlas = ExtResource("1") +region = Rect2(1664, 1152, 128, 128) + +[sub_resource type="AtlasTexture" id="627"] +atlas = ExtResource("1") +region = Rect2(1792, 1152, 128, 128) + +[sub_resource type="AtlasTexture" id="628"] +atlas = ExtResource("1") +region = Rect2(1920, 1152, 128, 128) + +[sub_resource type="AtlasTexture" id="629"] +atlas = ExtResource("1") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="630"] +atlas = ExtResource("1") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="631"] +atlas = ExtResource("1") +region = Rect2(256, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="632"] +atlas = ExtResource("1") +region = Rect2(384, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="633"] +atlas = ExtResource("1") +region = Rect2(512, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="634"] +atlas = ExtResource("1") +region = Rect2(640, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="635"] +atlas = ExtResource("1") +region = Rect2(768, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="636"] +atlas = ExtResource("1") +region = Rect2(896, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="637"] +atlas = ExtResource("1") +region = Rect2(1024, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="638"] +atlas = ExtResource("1") +region = Rect2(1152, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="639"] +atlas = ExtResource("1") +region = Rect2(1280, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="640"] +atlas = ExtResource("1") +region = Rect2(1408, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="641"] +atlas = ExtResource("1") +region = Rect2(1536, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="642"] +atlas = ExtResource("1") +region = Rect2(1664, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="643"] +atlas = ExtResource("1") +region = Rect2(1792, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="644"] +atlas = ExtResource("1") +region = Rect2(1920, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="645"] +atlas = ExtResource("1") +region = Rect2(0, 128, 128, 128) + +[sub_resource type="AtlasTexture" id="646"] +atlas = ExtResource("1") +region = Rect2(128, 128, 128, 128) + +[sub_resource type="AtlasTexture" id="647"] +atlas = ExtResource("1") +region = Rect2(256, 128, 128, 128) + +[sub_resource type="AtlasTexture" id="648"] +atlas = ExtResource("1") +region = Rect2(384, 128, 128, 128) + +[sub_resource type="AtlasTexture" id="649"] +atlas = ExtResource("1") +region = Rect2(512, 128, 128, 128) + +[sub_resource type="AtlasTexture" id="650"] +atlas = ExtResource("1") +region = Rect2(640, 128, 128, 128) + +[sub_resource type="AtlasTexture" id="651"] +atlas = ExtResource("1") +region = Rect2(768, 128, 128, 128) + +[sub_resource type="AtlasTexture" id="652"] +atlas = ExtResource("1") +region = Rect2(896, 128, 128, 128) + +[sub_resource type="AtlasTexture" id="653"] +atlas = ExtResource("1") +region = Rect2(1024, 128, 128, 128) + +[sub_resource type="AtlasTexture" id="654"] +atlas = ExtResource("1") +region = Rect2(1152, 128, 128, 128) + +[sub_resource type="AtlasTexture" id="655"] +atlas = ExtResource("1") +region = Rect2(1280, 128, 128, 128) + +[sub_resource type="AtlasTexture" id="656"] +atlas = ExtResource("1") +region = Rect2(1408, 128, 128, 128) + +[sub_resource type="AtlasTexture" id="657"] +atlas = ExtResource("1") +region = Rect2(1536, 128, 128, 128) + +[sub_resource type="AtlasTexture" id="658"] +atlas = ExtResource("1") +region = Rect2(1664, 128, 128, 128) + +[sub_resource type="AtlasTexture" id="659"] +atlas = ExtResource("1") +region = Rect2(1792, 128, 128, 128) + +[sub_resource type="AtlasTexture" id="660"] +atlas = ExtResource("1") +region = Rect2(1920, 128, 128, 128) + +[sub_resource type="AtlasTexture" id="453"] +atlas = ExtResource("1") +region = Rect2(0, 512, 128, 128) + +[sub_resource type="AtlasTexture" id="454"] +atlas = ExtResource("1") +region = Rect2(128, 512, 128, 128) + +[sub_resource type="AtlasTexture" id="455"] +atlas = ExtResource("1") +region = Rect2(256, 512, 128, 128) + +[sub_resource type="AtlasTexture" id="456"] +atlas = ExtResource("1") +region = Rect2(384, 512, 128, 128) + +[sub_resource type="AtlasTexture" id="457"] +atlas = ExtResource("1") +region = Rect2(512, 512, 128, 128) + +[sub_resource type="AtlasTexture" id="458"] +atlas = ExtResource("1") +region = Rect2(640, 512, 128, 128) + +[sub_resource type="AtlasTexture" id="459"] +atlas = ExtResource("1") +region = Rect2(768, 512, 128, 128) + +[sub_resource type="AtlasTexture" id="460"] +atlas = ExtResource("1") +region = Rect2(896, 512, 128, 128) + +[sub_resource type="AtlasTexture" id="461"] +atlas = ExtResource("1") +region = Rect2(1024, 512, 128, 128) + +[sub_resource type="AtlasTexture" id="462"] +atlas = ExtResource("1") +region = Rect2(1152, 512, 128, 128) + +[sub_resource type="AtlasTexture" id="463"] +atlas = ExtResource("1") +region = Rect2(1280, 512, 128, 128) + +[sub_resource type="AtlasTexture" id="464"] +atlas = ExtResource("1") +region = Rect2(1408, 512, 128, 128) + +[sub_resource type="AtlasTexture" id="465"] +atlas = ExtResource("1") +region = Rect2(1536, 512, 128, 128) + +[sub_resource type="AtlasTexture" id="466"] +atlas = ExtResource("1") +region = Rect2(1664, 512, 128, 128) + +[sub_resource type="AtlasTexture" id="467"] +atlas = ExtResource("1") +region = Rect2(1792, 512, 128, 128) + +[sub_resource type="AtlasTexture" id="468"] +atlas = ExtResource("1") +region = Rect2(1920, 512, 128, 128) + +[sub_resource type="AtlasTexture" id="517"] +atlas = ExtResource("1") +region = Rect2(0, 640, 128, 128) + +[sub_resource type="AtlasTexture" id="518"] +atlas = ExtResource("1") +region = Rect2(128, 640, 128, 128) + +[sub_resource type="AtlasTexture" id="519"] +atlas = ExtResource("1") +region = Rect2(256, 640, 128, 128) + +[sub_resource type="AtlasTexture" id="520"] +atlas = ExtResource("1") +region = Rect2(384, 640, 128, 128) + +[sub_resource type="AtlasTexture" id="521"] +atlas = ExtResource("1") +region = Rect2(512, 640, 128, 128) + +[sub_resource type="AtlasTexture" id="522"] +atlas = ExtResource("1") +region = Rect2(640, 640, 128, 128) + +[sub_resource type="AtlasTexture" id="523"] +atlas = ExtResource("1") +region = Rect2(768, 640, 128, 128) + +[sub_resource type="AtlasTexture" id="524"] +atlas = ExtResource("1") +region = Rect2(896, 640, 128, 128) + +[sub_resource type="AtlasTexture" id="525"] +atlas = ExtResource("1") +region = Rect2(1024, 640, 128, 128) + +[sub_resource type="AtlasTexture" id="526"] +atlas = ExtResource("1") +region = Rect2(1152, 640, 128, 128) + +[sub_resource type="AtlasTexture" id="527"] +atlas = ExtResource("1") +region = Rect2(1280, 640, 128, 128) + +[sub_resource type="AtlasTexture" id="528"] +atlas = ExtResource("1") +region = Rect2(1408, 640, 128, 128) + +[sub_resource type="AtlasTexture" id="529"] +atlas = ExtResource("1") +region = Rect2(1536, 640, 128, 128) + +[sub_resource type="AtlasTexture" id="530"] +atlas = ExtResource("1") +region = Rect2(1664, 640, 128, 128) + +[sub_resource type="AtlasTexture" id="531"] +atlas = ExtResource("1") +region = Rect2(1792, 640, 128, 128) + +[sub_resource type="AtlasTexture" id="532"] +atlas = ExtResource("1") +region = Rect2(1920, 640, 128, 128) + +[sub_resource type="AtlasTexture" id="485"] +atlas = ExtResource("1") +region = Rect2(0, 1536, 128, 128) + +[sub_resource type="AtlasTexture" id="486"] +atlas = ExtResource("1") +region = Rect2(128, 1536, 128, 128) + +[sub_resource type="AtlasTexture" id="487"] +atlas = ExtResource("1") +region = Rect2(256, 1536, 128, 128) + +[sub_resource type="AtlasTexture" id="488"] +atlas = ExtResource("1") +region = Rect2(384, 1536, 128, 128) + +[sub_resource type="AtlasTexture" id="489"] +atlas = ExtResource("1") +region = Rect2(512, 1536, 128, 128) + +[sub_resource type="AtlasTexture" id="490"] +atlas = ExtResource("1") +region = Rect2(640, 1536, 128, 128) + +[sub_resource type="AtlasTexture" id="491"] +atlas = ExtResource("1") +region = Rect2(768, 1536, 128, 128) + +[sub_resource type="AtlasTexture" id="492"] +atlas = ExtResource("1") +region = Rect2(896, 1536, 128, 128) + +[sub_resource type="AtlasTexture" id="493"] +atlas = ExtResource("1") +region = Rect2(1024, 1536, 128, 128) + +[sub_resource type="AtlasTexture" id="494"] +atlas = ExtResource("1") +region = Rect2(1152, 1536, 128, 128) + +[sub_resource type="AtlasTexture" id="495"] +atlas = ExtResource("1") +region = Rect2(1280, 1536, 128, 128) + +[sub_resource type="AtlasTexture" id="496"] +atlas = ExtResource("1") +region = Rect2(1408, 1536, 128, 128) + +[sub_resource type="AtlasTexture" id="497"] +atlas = ExtResource("1") +region = Rect2(1536, 1536, 128, 128) + +[sub_resource type="AtlasTexture" id="498"] +atlas = ExtResource("1") +region = Rect2(1664, 1536, 128, 128) + +[sub_resource type="AtlasTexture" id="499"] +atlas = ExtResource("1") +region = Rect2(1792, 1536, 128, 128) + +[sub_resource type="AtlasTexture" id="500"] +atlas = ExtResource("1") +region = Rect2(1920, 1536, 128, 128) + +[sub_resource type="AtlasTexture" id="501"] +atlas = ExtResource("1") +region = Rect2(0, 1664, 128, 128) + +[sub_resource type="AtlasTexture" id="502"] +atlas = ExtResource("1") +region = Rect2(128, 1664, 128, 128) + +[sub_resource type="AtlasTexture" id="503"] +atlas = ExtResource("1") +region = Rect2(256, 1664, 128, 128) + +[sub_resource type="AtlasTexture" id="504"] +atlas = ExtResource("1") +region = Rect2(384, 1664, 128, 128) + +[sub_resource type="AtlasTexture" id="505"] +atlas = ExtResource("1") +region = Rect2(512, 1664, 128, 128) + +[sub_resource type="AtlasTexture" id="506"] +atlas = ExtResource("1") +region = Rect2(640, 1664, 128, 128) + +[sub_resource type="AtlasTexture" id="507"] +atlas = ExtResource("1") +region = Rect2(768, 1664, 128, 128) + +[sub_resource type="AtlasTexture" id="508"] +atlas = ExtResource("1") +region = Rect2(896, 1664, 128, 128) + +[sub_resource type="AtlasTexture" id="509"] +atlas = ExtResource("1") +region = Rect2(1024, 1664, 128, 128) + +[sub_resource type="AtlasTexture" id="510"] +atlas = ExtResource("1") +region = Rect2(1152, 1664, 128, 128) + +[sub_resource type="AtlasTexture" id="511"] +atlas = ExtResource("1") +region = Rect2(1280, 1664, 128, 128) + +[sub_resource type="AtlasTexture" id="512"] +atlas = ExtResource("1") +region = Rect2(1408, 1664, 128, 128) + +[sub_resource type="AtlasTexture" id="513"] +atlas = ExtResource("1") +region = Rect2(1536, 1664, 128, 128) + +[sub_resource type="AtlasTexture" id="514"] +atlas = ExtResource("1") +region = Rect2(1664, 1664, 128, 128) + +[sub_resource type="AtlasTexture" id="515"] +atlas = ExtResource("1") +region = Rect2(1792, 1664, 128, 128) + +[sub_resource type="AtlasTexture" id="516"] +atlas = ExtResource("1") +region = Rect2(1920, 1664, 128, 128) + +[sub_resource type="SpriteFrames" id="260"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("261") +}, { +"duration": 1.0, +"texture": SubResource("262") +}, { +"duration": 1.0, +"texture": SubResource("263") +}, { +"duration": 1.0, +"texture": SubResource("264") +}, { +"duration": 1.0, +"texture": SubResource("265") +}, { +"duration": 1.0, +"texture": SubResource("266") +}, { +"duration": 1.0, +"texture": SubResource("267") +}, { +"duration": 1.0, +"texture": SubResource("268") +}, { +"duration": 1.0, +"texture": SubResource("269") +}, { +"duration": 1.0, +"texture": SubResource("270") +}, { +"duration": 1.0, +"texture": SubResource("271") +}, { +"duration": 1.0, +"texture": SubResource("272") +}, { +"duration": 1.0, +"texture": SubResource("273") +}, { +"duration": 1.0, +"texture": SubResource("274") +}, { +"duration": 1.0, +"texture": SubResource("275") +}, { +"duration": 1.0, +"texture": SubResource("276") +}], +"loop": true, +"name": &"45back_left_idle", +"speed": 24.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("277") +}, { +"duration": 1.0, +"texture": SubResource("278") +}, { +"duration": 1.0, +"texture": SubResource("279") +}, { +"duration": 1.0, +"texture": SubResource("280") +}, { +"duration": 1.0, +"texture": SubResource("281") +}, { +"duration": 1.0, +"texture": SubResource("282") +}, { +"duration": 1.0, +"texture": SubResource("283") +}, { +"duration": 1.0, +"texture": SubResource("284") +}, { +"duration": 1.0, +"texture": SubResource("285") +}, { +"duration": 1.0, +"texture": SubResource("286") +}, { +"duration": 1.0, +"texture": SubResource("287") +}, { +"duration": 1.0, +"texture": SubResource("288") +}, { +"duration": 1.0, +"texture": SubResource("289") +}, { +"duration": 1.0, +"texture": SubResource("290") +}, { +"duration": 1.0, +"texture": SubResource("291") +}, { +"duration": 1.0, +"texture": SubResource("292") +}], +"loop": true, +"name": &"45back_left_walk", +"speed": 24.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("293") +}, { +"duration": 1.0, +"texture": SubResource("294") +}, { +"duration": 1.0, +"texture": SubResource("295") +}, { +"duration": 1.0, +"texture": SubResource("296") +}, { +"duration": 1.0, +"texture": SubResource("297") +}, { +"duration": 1.0, +"texture": SubResource("298") +}, { +"duration": 1.0, +"texture": SubResource("299") +}, { +"duration": 1.0, +"texture": SubResource("300") +}, { +"duration": 1.0, +"texture": SubResource("301") +}, { +"duration": 1.0, +"texture": SubResource("302") +}, { +"duration": 1.0, +"texture": SubResource("303") +}, { +"duration": 1.0, +"texture": SubResource("304") +}, { +"duration": 1.0, +"texture": SubResource("305") +}, { +"duration": 1.0, +"texture": SubResource("306") +}, { +"duration": 1.0, +"texture": SubResource("307") +}, { +"duration": 1.0, +"texture": SubResource("308") +}], +"loop": true, +"name": &"45back_right_idle", +"speed": 24.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("309") +}, { +"duration": 1.0, +"texture": SubResource("310") +}, { +"duration": 1.0, +"texture": SubResource("311") +}, { +"duration": 1.0, +"texture": SubResource("312") +}, { +"duration": 1.0, +"texture": SubResource("313") +}, { +"duration": 1.0, +"texture": SubResource("314") +}, { +"duration": 1.0, +"texture": SubResource("315") +}, { +"duration": 1.0, +"texture": SubResource("316") +}, { +"duration": 1.0, +"texture": SubResource("317") +}, { +"duration": 1.0, +"texture": SubResource("318") +}, { +"duration": 1.0, +"texture": SubResource("319") +}, { +"duration": 1.0, +"texture": SubResource("320") +}, { +"duration": 1.0, +"texture": SubResource("321") +}, { +"duration": 1.0, +"texture": SubResource("322") +}, { +"duration": 1.0, +"texture": SubResource("323") +}, { +"duration": 1.0, +"texture": SubResource("324") +}], +"loop": true, +"name": &"45back_right_walk", +"speed": 24.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("325") +}, { +"duration": 1.0, +"texture": SubResource("326") +}, { +"duration": 1.0, +"texture": SubResource("327") +}, { +"duration": 1.0, +"texture": SubResource("328") +}, { +"duration": 1.0, +"texture": SubResource("329") +}, { +"duration": 1.0, +"texture": SubResource("330") +}, { +"duration": 1.0, +"texture": SubResource("331") +}, { +"duration": 1.0, +"texture": SubResource("332") +}, { +"duration": 1.0, +"texture": SubResource("333") +}, { +"duration": 1.0, +"texture": SubResource("334") +}, { +"duration": 1.0, +"texture": SubResource("335") +}, { +"duration": 1.0, +"texture": SubResource("336") +}, { +"duration": 1.0, +"texture": SubResource("337") +}, { +"duration": 1.0, +"texture": SubResource("338") +}, { +"duration": 1.0, +"texture": SubResource("339") +}, { +"duration": 1.0, +"texture": SubResource("340") +}], +"loop": true, +"name": &"45front_left_idle", +"speed": 24.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("341") +}, { +"duration": 1.0, +"texture": SubResource("342") +}, { +"duration": 1.0, +"texture": SubResource("343") +}, { +"duration": 1.0, +"texture": SubResource("344") +}, { +"duration": 1.0, +"texture": SubResource("345") +}, { +"duration": 1.0, +"texture": SubResource("346") +}, { +"duration": 1.0, +"texture": SubResource("347") +}, { +"duration": 1.0, +"texture": SubResource("348") +}, { +"duration": 1.0, +"texture": SubResource("349") +}, { +"duration": 1.0, +"texture": SubResource("350") +}, { +"duration": 1.0, +"texture": SubResource("351") +}, { +"duration": 1.0, +"texture": SubResource("352") +}, { +"duration": 1.0, +"texture": SubResource("353") +}, { +"duration": 1.0, +"texture": SubResource("354") +}, { +"duration": 1.0, +"texture": SubResource("355") +}, { +"duration": 1.0, +"texture": SubResource("356") +}], +"loop": true, +"name": &"45front_left_walk", +"speed": 24.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("357") +}, { +"duration": 1.0, +"texture": SubResource("358") +}, { +"duration": 1.0, +"texture": SubResource("359") +}, { +"duration": 1.0, +"texture": SubResource("360") +}, { +"duration": 1.0, +"texture": SubResource("361") +}, { +"duration": 1.0, +"texture": SubResource("362") +}, { +"duration": 1.0, +"texture": SubResource("363") +}, { +"duration": 1.0, +"texture": SubResource("364") +}, { +"duration": 1.0, +"texture": SubResource("365") +}, { +"duration": 1.0, +"texture": SubResource("366") +}, { +"duration": 1.0, +"texture": SubResource("367") +}, { +"duration": 1.0, +"texture": SubResource("368") +}, { +"duration": 1.0, +"texture": SubResource("369") +}, { +"duration": 1.0, +"texture": SubResource("370") +}, { +"duration": 1.0, +"texture": SubResource("371") +}, { +"duration": 1.0, +"texture": SubResource("372") +}], +"loop": true, +"name": &"45front_right_idle", +"speed": 24.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("373") +}, { +"duration": 1.0, +"texture": SubResource("374") +}, { +"duration": 1.0, +"texture": SubResource("375") +}, { +"duration": 1.0, +"texture": SubResource("376") +}, { +"duration": 1.0, +"texture": SubResource("377") +}, { +"duration": 1.0, +"texture": SubResource("378") +}, { +"duration": 1.0, +"texture": SubResource("379") +}, { +"duration": 1.0, +"texture": SubResource("380") +}, { +"duration": 1.0, +"texture": SubResource("381") +}, { +"duration": 1.0, +"texture": SubResource("382") +}, { +"duration": 1.0, +"texture": SubResource("383") +}, { +"duration": 1.0, +"texture": SubResource("384") +}, { +"duration": 1.0, +"texture": SubResource("385") +}, { +"duration": 1.0, +"texture": SubResource("386") +}, { +"duration": 1.0, +"texture": SubResource("387") +}, { +"duration": 1.0, +"texture": SubResource("388") +}], +"loop": true, +"name": &"45front_right_walk", +"speed": 24.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("597") +}, { +"duration": 1.0, +"texture": SubResource("598") +}, { +"duration": 1.0, +"texture": SubResource("599") +}, { +"duration": 1.0, +"texture": SubResource("600") +}, { +"duration": 1.0, +"texture": SubResource("601") +}, { +"duration": 1.0, +"texture": SubResource("602") +}, { +"duration": 1.0, +"texture": SubResource("603") +}, { +"duration": 1.0, +"texture": SubResource("604") +}, { +"duration": 1.0, +"texture": SubResource("605") +}, { +"duration": 1.0, +"texture": SubResource("606") +}, { +"duration": 1.0, +"texture": SubResource("607") +}, { +"duration": 1.0, +"texture": SubResource("608") +}, { +"duration": 1.0, +"texture": SubResource("609") +}, { +"duration": 1.0, +"texture": SubResource("610") +}, { +"duration": 1.0, +"texture": SubResource("611") +}, { +"duration": 1.0, +"texture": SubResource("612") +}], +"loop": true, +"name": &"back_idle", +"speed": 24.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("613") +}, { +"duration": 1.0, +"texture": SubResource("614") +}, { +"duration": 1.0, +"texture": SubResource("615") +}, { +"duration": 1.0, +"texture": SubResource("616") +}, { +"duration": 1.0, +"texture": SubResource("617") +}, { +"duration": 1.0, +"texture": SubResource("618") +}, { +"duration": 1.0, +"texture": SubResource("619") +}, { +"duration": 1.0, +"texture": SubResource("620") +}, { +"duration": 1.0, +"texture": SubResource("621") +}, { +"duration": 1.0, +"texture": SubResource("622") +}, { +"duration": 1.0, +"texture": SubResource("623") +}, { +"duration": 1.0, +"texture": SubResource("624") +}, { +"duration": 1.0, +"texture": SubResource("625") +}, { +"duration": 1.0, +"texture": SubResource("626") +}, { +"duration": 1.0, +"texture": SubResource("627") +}, { +"duration": 1.0, +"texture": SubResource("628") +}], +"loop": true, +"name": &"back_walk", +"speed": 24.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("629") +}, { +"duration": 1.0, +"texture": SubResource("630") +}, { +"duration": 1.0, +"texture": SubResource("631") +}, { +"duration": 1.0, +"texture": SubResource("632") +}, { +"duration": 1.0, +"texture": SubResource("633") +}, { +"duration": 1.0, +"texture": SubResource("634") +}, { +"duration": 1.0, +"texture": SubResource("635") +}, { +"duration": 1.0, +"texture": SubResource("636") +}, { +"duration": 1.0, +"texture": SubResource("637") +}, { +"duration": 1.0, +"texture": SubResource("638") +}, { +"duration": 1.0, +"texture": SubResource("639") +}, { +"duration": 1.0, +"texture": SubResource("640") +}, { +"duration": 1.0, +"texture": SubResource("641") +}, { +"duration": 1.0, +"texture": SubResource("642") +}, { +"duration": 1.0, +"texture": SubResource("643") +}, { +"duration": 1.0, +"texture": SubResource("644") +}], +"loop": true, +"name": &"front_idle", +"speed": 24.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("645") +}, { +"duration": 1.0, +"texture": SubResource("646") +}, { +"duration": 1.0, +"texture": SubResource("647") +}, { +"duration": 1.0, +"texture": SubResource("648") +}, { +"duration": 1.0, +"texture": SubResource("649") +}, { +"duration": 1.0, +"texture": SubResource("650") +}, { +"duration": 1.0, +"texture": SubResource("651") +}, { +"duration": 1.0, +"texture": SubResource("652") +}, { +"duration": 1.0, +"texture": SubResource("653") +}, { +"duration": 1.0, +"texture": SubResource("654") +}, { +"duration": 1.0, +"texture": SubResource("655") +}, { +"duration": 1.0, +"texture": SubResource("656") +}, { +"duration": 1.0, +"texture": SubResource("657") +}, { +"duration": 1.0, +"texture": SubResource("658") +}, { +"duration": 1.0, +"texture": SubResource("659") +}, { +"duration": 1.0, +"texture": SubResource("660") +}], +"loop": true, +"name": &"front_walk", +"speed": 24.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("453") +}, { +"duration": 1.0, +"texture": SubResource("454") +}, { +"duration": 1.0, +"texture": SubResource("455") +}, { +"duration": 1.0, +"texture": SubResource("456") +}, { +"duration": 1.0, +"texture": SubResource("457") +}, { +"duration": 1.0, +"texture": SubResource("458") +}, { +"duration": 1.0, +"texture": SubResource("459") +}, { +"duration": 1.0, +"texture": SubResource("460") +}, { +"duration": 1.0, +"texture": SubResource("461") +}, { +"duration": 1.0, +"texture": SubResource("462") +}, { +"duration": 1.0, +"texture": SubResource("463") +}, { +"duration": 1.0, +"texture": SubResource("464") +}, { +"duration": 1.0, +"texture": SubResource("465") +}, { +"duration": 1.0, +"texture": SubResource("466") +}, { +"duration": 1.0, +"texture": SubResource("467") +}, { +"duration": 1.0, +"texture": SubResource("468") +}], +"loop": true, +"name": &"side_left_idle", +"speed": 24.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("517") +}, { +"duration": 1.0, +"texture": SubResource("518") +}, { +"duration": 1.0, +"texture": SubResource("519") +}, { +"duration": 1.0, +"texture": SubResource("520") +}, { +"duration": 1.0, +"texture": SubResource("521") +}, { +"duration": 1.0, +"texture": SubResource("522") +}, { +"duration": 1.0, +"texture": SubResource("523") +}, { +"duration": 1.0, +"texture": SubResource("524") +}, { +"duration": 1.0, +"texture": SubResource("525") +}, { +"duration": 1.0, +"texture": SubResource("526") +}, { +"duration": 1.0, +"texture": SubResource("527") +}, { +"duration": 1.0, +"texture": SubResource("528") +}, { +"duration": 1.0, +"texture": SubResource("529") +}, { +"duration": 1.0, +"texture": SubResource("530") +}, { +"duration": 1.0, +"texture": SubResource("531") +}, { +"duration": 1.0, +"texture": SubResource("532") +}], +"loop": true, +"name": &"side_left_walk", +"speed": 24.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("485") +}, { +"duration": 1.0, +"texture": SubResource("486") +}, { +"duration": 1.0, +"texture": SubResource("487") +}, { +"duration": 1.0, +"texture": SubResource("488") +}, { +"duration": 1.0, +"texture": SubResource("489") +}, { +"duration": 1.0, +"texture": SubResource("490") +}, { +"duration": 1.0, +"texture": SubResource("491") +}, { +"duration": 1.0, +"texture": SubResource("492") +}, { +"duration": 1.0, +"texture": SubResource("493") +}, { +"duration": 1.0, +"texture": SubResource("494") +}, { +"duration": 1.0, +"texture": SubResource("495") +}, { +"duration": 1.0, +"texture": SubResource("496") +}, { +"duration": 1.0, +"texture": SubResource("497") +}, { +"duration": 1.0, +"texture": SubResource("498") +}, { +"duration": 1.0, +"texture": SubResource("499") +}, { +"duration": 1.0, +"texture": SubResource("500") +}], +"loop": true, +"name": &"side_right_idle", +"speed": 24.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("501") +}, { +"duration": 1.0, +"texture": SubResource("502") +}, { +"duration": 1.0, +"texture": SubResource("503") +}, { +"duration": 1.0, +"texture": SubResource("504") +}, { +"duration": 1.0, +"texture": SubResource("505") +}, { +"duration": 1.0, +"texture": SubResource("506") +}, { +"duration": 1.0, +"texture": SubResource("507") +}, { +"duration": 1.0, +"texture": SubResource("508") +}, { +"duration": 1.0, +"texture": SubResource("509") +}, { +"duration": 1.0, +"texture": SubResource("510") +}, { +"duration": 1.0, +"texture": SubResource("511") +}, { +"duration": 1.0, +"texture": SubResource("512") +}, { +"duration": 1.0, +"texture": SubResource("513") +}, { +"duration": 1.0, +"texture": SubResource("514") +}, { +"duration": 1.0, +"texture": SubResource("515") +}, { +"duration": 1.0, +"texture": SubResource("516") +}], +"loop": true, +"name": &"side_right_walk", +"speed": 24.0 +}] + +[sub_resource type="CapsuleShape2D" id="1"] +radius = 7.0 +height = 14.0 + +[sub_resource type="OccluderPolygon2D" id="661"] +polygon = PackedVector2Array(16.25, 18.75, 18.75, 36.25, 15, 38.75, 6.25, 42.5, -5, 42.5, -13.75, 41.25, -18.75, 37.5, -15, 20) + +[node name="Goblin" type="CharacterBody2D"] +script = ExtResource("2") + +[node name="Shadow" type="Sprite2D" parent="."] +modulate = Color(0.129412, 0.0745098, 0.192157, 0.647059) +position = Vector2(0, -0.406251) +scale = Vector2(0.78125, 0.362305) +texture = SubResource("663") + +[node name="Sprite2D" type="AnimatedSprite2D" parent="."] +position = Vector2(0, -35) +scale = Vector2(0.8, 0.8) +sprite_frames = SubResource("260") +animation = &"front_idle" +frame = 8 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2(0, -7) +rotation = 1.5708 +shape = SubResource("1") + +[node name="Camera2D" type="Camera2D" parent="."] + +[node name="LightOccluder2D" type="LightOccluder2D" parent="."] +visible = false +light_mask = 16 +position = Vector2(0, -31) +scale = Vector2(0.8, 0.8) +occluder = SubResource("661") diff --git a/2d/layered_tile_maps/isometric/project.godot b/2d/layered_tile_maps/isometric/project.godot new file mode 100644 index 0000000..a1efc83 --- /dev/null +++ b/2d/layered_tile_maps/isometric/project.godot @@ -0,0 +1,85 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="Isometric Game" +config/description="This demo shows a traditional isometric view with depth sorting. + +A character can move around the level and will also slide around objects, +as well as be occluded when standing in front or behind them." +config/tags=PackedStringArray("2d", "demo", "official", "tilemap") +run/main_scene="res://dungeon.tscn" +config/features=PackedStringArray("4.2") +config/icon="res://icon.webp" + +[display] + +window/stretch/mode="canvas_items" +window/stretch/aspect="expand" + +[gdnative] + +singletons=[] + +[image_loader] + +filter=false +gen_mipmaps=false + +[input] + +move_down={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194322,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":1.0,"script":null) +] +} +move_left={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194319,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null) +] +} +move_right={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194321,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null) +] +} +move_up={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194320,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null) +] +} + +[physics] + +common/physics_ticks_per_second=120 + +[rasterizer] + +use_pixel_snap=true + +[rendering] + +renderer/rendering_method="gl_compatibility" +environment/defaults/default_clear_color=Color(0.0784314, 0.105882, 0.145098, 1) +quality/driver/driver_name="GLES2" +vram_compression/import_etc=true diff --git a/2d/layered_tile_maps/isometric/screenshots/.gdignore b/2d/layered_tile_maps/isometric/screenshots/.gdignore new file mode 100644 index 0000000..e69de29 diff --git a/2d/layered_tile_maps/isometric/screenshots/isometric.webp b/2d/layered_tile_maps/isometric/screenshots/isometric.webp new file mode 100644 index 0000000..bee16f2 Binary files /dev/null and b/2d/layered_tile_maps/isometric/screenshots/isometric.webp differ diff --git a/2d/layered_tile_maps/isometric/tileset/isotiles.png b/2d/layered_tile_maps/isometric/tileset/isotiles.png new file mode 100644 index 0000000..67ebbb3 Binary files /dev/null and b/2d/layered_tile_maps/isometric/tileset/isotiles.png differ diff --git a/2d/layered_tile_maps/isometric/tileset/isotiles.png.import b/2d/layered_tile_maps/isometric/tileset/isotiles.png.import new file mode 100644 index 0000000..4c7fa33 --- /dev/null +++ b/2d/layered_tile_maps/isometric/tileset/isotiles.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dup8jrb6ajapx" +path="res://.godot/imported/isotiles.png-525cf6639aba62989bb423b9cdb9e1f3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tileset/isotiles.png" +dest_files=["res://.godot/imported/isotiles.png-525cf6639aba62989bb423b9cdb9e1f3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/isometric/tileset/tileset.tres b/2d/layered_tile_maps/isometric/tileset/tileset.tres new file mode 100644 index 0000000..2bfcc4b --- /dev/null +++ b/2d/layered_tile_maps/isometric/tileset/tileset.tres @@ -0,0 +1,248 @@ +[gd_resource type="TileSet" load_steps=7 format=3 uid="uid://ceswxvl27cesm"] + +[ext_resource type="Texture2D" uid="uid://dup8jrb6ajapx" path="res://tileset/isotiles.png" id="1"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_s3w07"] +texture = ExtResource("1") +margins = Vector2i(28, 75) +texture_region_size = Vector2i(135, 105) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_fa1vh"] +texture = ExtResource("1") +margins = Vector2i(221, 75) +texture_region_size = Vector2i(135, 105) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_xpb3e"] +texture = ExtResource("1") +margins = Vector2i(28, 220) +texture_region_size = Vector2i(140, 140) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-2, -2, 62, 30, -2, 62, -66, 30) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(2, -2, -62, 30, 2, 62, 66, 30) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-2, 2, 62, -30, -2, -62, -66, -30) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(2, 2, -62, -30, 2, -62, 66, -30) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-2, -2, 62, 30, -2.00001, 62, -66, 30) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(2, -2, -62, 30, 1.99999, 62, 66, 30) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-2, 2, 62, -30, -1.99999, -62, -66, -30) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(2, 2, -62, -30, 2.00001, -62, 66, -30) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_aki5c"] +texture = ExtResource("1") +margins = Vector2i(259, 241) +texture_region_size = Vector2i(55, 95) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-22.5, 19.5, -10.5, 11.5, 13.5, 11.5, 25.5, 19.5, 25.5, 35.5, 13.5, 43.5, -6.5, 43.5, -22.5, 35.5) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(22.5, 19.5, 10.5, 11.5, -13.5, 11.5, -25.5, 19.5, -25.5, 35.5, -13.5, 43.5, 6.5, 43.5, 22.5, 35.5) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-22.5, -19.5, -10.5, -11.5, 13.5, -11.5, 25.5, -19.5, 25.5, -35.5, 13.5, -43.5, -6.5, -43.5, -22.5, -35.5) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(22.5, -19.5, 10.5, -11.5, -13.5, -11.5, -25.5, -19.5, -25.5, -35.5, -13.5, -43.5, 6.5, -43.5, 22.5, -35.5) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-22.5, 19.5, -10.5, 11.5, 13.5, 11.5, 25.5, 19.5, 25.5, 35.5, 13.5, 43.5, -6.5, 43.5, -22.5, 35.5) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(22.5, 19.5, 10.5, 11.5, -13.5, 11.5, -25.5, 19.5, -25.5, 35.5, -13.5, 43.5, 6.5, 43.5, 22.5, 35.5) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-22.5, -19.5, -10.5, -11.5, 13.5, -11.5, 25.5, -19.5, 25.5, -35.5, 13.5, -43.5, -6.5, -43.5, -22.5, -35.5) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(22.5, -19.5, 10.5, -11.5, -13.5, -11.5, -25.5, -19.5, -25.5, -35.5, -13.5, -43.5, 6.5, -43.5, 22.5, -35.5) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_ec70s"] +texture = ExtResource("1") +margins = Vector2i(54, 426) +texture_region_size = Vector2i(85, 110) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-40.5, 31, 39.5, -9, 39.5, 15, -40.5, 55) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(40.5, 31, -39.5, -9, -39.5, 15, 40.5, 55) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-40.5, -31, 39.5, 9, 39.5, -15, -40.5, -55) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(40.5, -31, -39.5, 9, -39.5, -15, 40.5, -55) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-40.5, 31, 39.5, -9, 39.5, 15, -40.5, 55) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(40.5, 31, -39.5, -9, -39.5, 15, 40.5, 55) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-40.5, -31, 39.5, 9, 39.5, -15, -40.5, -55) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(40.5, -31, -39.5, 9, -39.5, -15, 40.5, -55) + +[resource] +tile_shape = 1 +tile_layout = 5 +tile_size = Vector2i(128, 64) +physics_layer_0/collision_layer = 1 +sources/0 = SubResource("TileSetAtlasSource_s3w07") +sources/1 = SubResource("TileSetAtlasSource_fa1vh") +sources/2 = SubResource("TileSetAtlasSource_xpb3e") +sources/3 = SubResource("TileSetAtlasSource_aki5c") +sources/4 = SubResource("TileSetAtlasSource_ec70s") diff --git a/2d/layered_tile_maps/isometric/tileset/tileset_edit.tscn b/2d/layered_tile_maps/isometric/tileset/tileset_edit.tscn new file mode 100644 index 0000000..888e934 --- /dev/null +++ b/2d/layered_tile_maps/isometric/tileset/tileset_edit.tscn @@ -0,0 +1,60 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://tileset/isotiles.png" type="Texture2D" id=1] + +[sub_resource type="OccluderPolygon2D" id=2] +polygon = PackedVector2Array( 0, -100, -67, -68, -66, 0, -1, 33, 66, -2, 64, -67 ) + +[node name="TilesetEdit" type="Node2D"] + +[node name="Base" type="Sprite2D" parent="."] +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 28, 75, 135, 105 ) + +[node name="Base2" type="Sprite2D" parent="."] +position = Vector2( 200, 0 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 221, 75, 135, 105 ) + +[node name="Wall" type="Sprite2D" parent="."] +position = Vector2( 400, 0 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, -32 ) +region_enabled = true +region_rect = Rect2( 28, 220, 140, 140 ) + +[node name="StaticBody2D" type="StaticBody2D" parent="Wall"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Wall/StaticBody2D"] +polygon = PackedVector2Array( -64, 0, 0, 32, 64, 0, 0, -32 ) + +[node name="LightOccluder2D" type="LightOccluder2D" parent="Wall"] +visible = false +occluder = SubResource( 2 ) + +[node name="Column" type="Sprite2D" parent="."] +position = Vector2( 600, 0 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, -32 ) +region_enabled = true +region_rect = Rect2( 259, 241, 55, 95 ) + +[node name="StaticBody2D" type="StaticBody2D" parent="Column"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Column/StaticBody2D"] +position = Vector2( 2, 0 ) +polygon = PackedVector2Array( -27, 7, -14, 20, 16, 20, 28, 4, 24, -12, 10, -22, -10, -22, -24, -12 ) + +[node name="Door1" type="Sprite2D" parent="."] +position = Vector2( 800, 0 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, -25 ) +region_enabled = true +region_rect = Rect2( 54, 426, 85, 110 ) + +[node name="StaticBody2D" type="StaticBody2D" parent="Door1"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Door1/StaticBody2D"] +polygon = PackedVector2Array( -24, 24, 40, -8, 24, -16, -40, 16 ) diff --git a/2d/layered_tile_maps/physics_platformer/README.md b/2d/layered_tile_maps/physics_platformer/README.md new file mode 100644 index 0000000..35edf2a --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/README.md @@ -0,0 +1,34 @@ +# Physics Platformer + +This demo uses [`RigidBody2D`](https://docs.godotengine.org/en/latest/classes/class_rigidbody2d.html) +for the player and enemies. +These character controllers are more powerful than +[`CharacterBody2D`](https://docs.godotengine.org/en/latest/classes/class_characterbody2d.html), +but can be more difficult to handle, as they require +manual modification of the RigidDynamicBody velocity. + +Language: GDScript + +Renderer: Forward Plus + +Check out this demo on the asset library: https://godotengine.org/asset-library/asset/119 + +## How does it work? + +The player and enemies use dynamic character +controllers for movement, made with +[`RigidBody2D`](https://docs.godotengine.org/en/latest/classes/class_rigidbody2d.html), +which means that they can perfectly interact with physics +(there is a see-saw, and you can even ride enemies). +Because of this, all movement must be done in sync with +the physics engine, inside of `_integrate_forces()`. + +## Screenshots + +![Screenshot of the beginning](screenshots/beginning.png) + +![Screenshot of the seesaw and the player riding an enemy](screenshots/seesaw-riding.png) + +## Music + +"Pompy" by Hubert Lamontagne (madbr) https://soundcloud.com/madbr/pompy diff --git a/2d/layered_tile_maps/physics_platformer/audio/music.ogg b/2d/layered_tile_maps/physics_platformer/audio/music.ogg new file mode 100644 index 0000000..ed3e9f0 Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/audio/music.ogg differ diff --git a/2d/layered_tile_maps/physics_platformer/audio/music.ogg.import b/2d/layered_tile_maps/physics_platformer/audio/music.ogg.import new file mode 100644 index 0000000..a80b8e4 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/audio/music.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://gunv00cij80t" +path="res://.godot/imported/music.ogg-552a37c4bfe46d894cb8004cf1c345ad.oggvorbisstr" + +[deps] + +source_file="res://audio/music.ogg" +dest_files=["res://.godot/imported/music.ogg-552a37c4bfe46d894cb8004cf1c345ad.oggvorbisstr"] + +[params] + +loop=true +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/2d/layered_tile_maps/physics_platformer/audio/sound_coin.wav b/2d/layered_tile_maps/physics_platformer/audio/sound_coin.wav new file mode 100644 index 0000000..e78579f Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/audio/sound_coin.wav differ diff --git a/2d/layered_tile_maps/physics_platformer/audio/sound_coin.wav.import b/2d/layered_tile_maps/physics_platformer/audio/sound_coin.wav.import new file mode 100644 index 0000000..2e7f227 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/audio/sound_coin.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://cy7lxrapbqu1r" +path="res://.godot/imported/sound_coin.wav-e18cceeba8b7dc02bbb940b85bcad99a.sample" + +[deps] + +source_file="res://audio/sound_coin.wav" +dest_files=["res://.godot/imported/sound_coin.wav-e18cceeba8b7dc02bbb940b85bcad99a.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=true +edit/normalize=true +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/2d/layered_tile_maps/physics_platformer/audio/sound_explode.wav b/2d/layered_tile_maps/physics_platformer/audio/sound_explode.wav new file mode 100644 index 0000000..229c853 Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/audio/sound_explode.wav differ diff --git a/2d/layered_tile_maps/physics_platformer/audio/sound_explode.wav.import b/2d/layered_tile_maps/physics_platformer/audio/sound_explode.wav.import new file mode 100644 index 0000000..750fe3c --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/audio/sound_explode.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://bulmr2lpb7y4h" +path="res://.godot/imported/sound_explode.wav-536668d880bfb277b9e5253774598e9e.sample" + +[deps] + +source_file="res://audio/sound_explode.wav" +dest_files=["res://.godot/imported/sound_explode.wav-536668d880bfb277b9e5253774598e9e.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=true +edit/normalize=true +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/2d/layered_tile_maps/physics_platformer/audio/sound_hit.wav b/2d/layered_tile_maps/physics_platformer/audio/sound_hit.wav new file mode 100644 index 0000000..4fb3b13 Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/audio/sound_hit.wav differ diff --git a/2d/layered_tile_maps/physics_platformer/audio/sound_hit.wav.import b/2d/layered_tile_maps/physics_platformer/audio/sound_hit.wav.import new file mode 100644 index 0000000..38059b0 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/audio/sound_hit.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://cfssio7r2t7wq" +path="res://.godot/imported/sound_hit.wav-6c98c4eeb2c6ac3fc45dc4a7ebd8602f.sample" + +[deps] + +source_file="res://audio/sound_hit.wav" +dest_files=["res://.godot/imported/sound_hit.wav-6c98c4eeb2c6ac3fc45dc4a7ebd8602f.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=true +edit/normalize=true +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/2d/layered_tile_maps/physics_platformer/audio/sound_jump.wav b/2d/layered_tile_maps/physics_platformer/audio/sound_jump.wav new file mode 100644 index 0000000..e9942e6 Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/audio/sound_jump.wav differ diff --git a/2d/layered_tile_maps/physics_platformer/audio/sound_jump.wav.import b/2d/layered_tile_maps/physics_platformer/audio/sound_jump.wav.import new file mode 100644 index 0000000..f11efeb --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/audio/sound_jump.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://bpyko2i13mj0v" +path="res://.godot/imported/sound_jump.wav-7e05b84e4426c7461dd15838765e210b.sample" + +[deps] + +source_file="res://audio/sound_jump.wav" +dest_files=["res://.godot/imported/sound_jump.wav-7e05b84e4426c7461dd15838765e210b.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=true +edit/normalize=true +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/2d/layered_tile_maps/physics_platformer/audio/sound_shoot.wav b/2d/layered_tile_maps/physics_platformer/audio/sound_shoot.wav new file mode 100644 index 0000000..ad74f32 Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/audio/sound_shoot.wav differ diff --git a/2d/layered_tile_maps/physics_platformer/audio/sound_shoot.wav.import b/2d/layered_tile_maps/physics_platformer/audio/sound_shoot.wav.import new file mode 100644 index 0000000..2923018 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/audio/sound_shoot.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://gw2a4ii0oby2" +path="res://.godot/imported/sound_shoot.wav-a37772efd1dbcd76c4fe35742f502bb7.sample" + +[deps] + +source_file="res://audio/sound_shoot.wav" +dest_files=["res://.godot/imported/sound_shoot.wav-a37772efd1dbcd76c4fe35742f502bb7.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=true +edit/normalize=true +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/2d/layered_tile_maps/physics_platformer/background/parallax_bg.tscn b/2d/layered_tile_maps/physics_platformer/background/parallax_bg.tscn new file mode 100644 index 0000000..b8a8c14 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/background/parallax_bg.tscn @@ -0,0 +1,74 @@ +[gd_scene load_steps=7 format=3 uid="uid://csdn3dwkaprow"] + +[ext_resource type="Texture2D" uid="uid://obtbrlptthky" path="res://background/scroll_bg_sky.png" id="1"] +[ext_resource type="Texture2D" uid="uid://udnu8aekj8mh" path="res://background/scroll_bg_cloud_1.png" id="2"] +[ext_resource type="Texture2D" uid="uid://crkm8guj5obto" path="res://background/scroll_bg_cloud_2.png" id="3"] +[ext_resource type="Texture2D" uid="uid://bb8syr2l4kbwp" path="res://background/scroll_bg_cloud_3.png" id="4"] +[ext_resource type="Texture2D" uid="uid://bitu0xunnhbjf" path="res://background/scroll_bg_fg_2.png" id="5"] +[ext_resource type="Texture2D" uid="uid://bdhblhpgjebrc" path="res://background/scroll_bg_fg_1.png" id="6"] + +[node name="ParallaxBg" type="ParallaxBackground"] +scroll_base_scale = Vector2(0.7, 0) + +[node name="Sky" type="ParallaxLayer" parent="."] +motion_mirroring = Vector2(400, 0) + +[node name="Sprite2D" type="Sprite2D" parent="Sky"] +scale = Vector2(1000, 0.94) +texture = ExtResource("1") +centered = false +offset = Vector2(-15, 0) + +[node name="Clouds" type="ParallaxLayer" parent="."] +motion_scale = Vector2(0.1, 1) +motion_mirroring = Vector2(400, 0) + +[node name="Sprite1" type="Sprite2D" parent="Clouds"] +position = Vector2(14, 64) +texture = ExtResource("2") +centered = false + +[node name="Sprite2" type="Sprite2D" parent="Clouds"] +position = Vector2(202, 12) +texture = ExtResource("2") +centered = false + +[node name="Sprite3" type="Sprite2D" parent="Clouds"] +position = Vector2(77, 23) +texture = ExtResource("3") +centered = false + +[node name="Sprite4" type="Sprite2D" parent="Clouds"] +position = Vector2(272, 65) +texture = ExtResource("3") +centered = false + +[node name="Sprite5" type="Sprite2D" parent="Clouds"] +position = Vector2(127, 79) +texture = ExtResource("4") +centered = false + +[node name="Sprite6" type="Sprite2D" parent="Clouds"] +position = Vector2(337, 35) +texture = ExtResource("4") +centered = false + +[node name="Mount2" type="ParallaxLayer" parent="."] +motion_scale = Vector2(0.2, 1) +motion_mirroring = Vector2(400, 0) + +[node name="Sprite2D" type="Sprite2D" parent="Mount2"] +position = Vector2(0, 113) +texture = ExtResource("5") +centered = false +region_rect = Rect2(0, 0, 400, 128) + +[node name="Mount1" type="ParallaxLayer" parent="."] +motion_scale = Vector2(0.4, 1) +motion_mirroring = Vector2(400, 0) + +[node name="Sprite2D" type="Sprite2D" parent="Mount1"] +position = Vector2(0, 113) +texture = ExtResource("6") +centered = false +region_rect = Rect2(0, 0, 400, 128) diff --git a/2d/layered_tile_maps/physics_platformer/background/plank.png b/2d/layered_tile_maps/physics_platformer/background/plank.png new file mode 100644 index 0000000..202f496 Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/background/plank.png differ diff --git a/2d/layered_tile_maps/physics_platformer/background/plank.png.import b/2d/layered_tile_maps/physics_platformer/background/plank.png.import new file mode 100644 index 0000000..4a23870 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/background/plank.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c3w6uvr4jjkwa" +path="res://.godot/imported/plank.png-d70731fc82f225d8353819786c2ed28a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://background/plank.png" +dest_files=["res://.godot/imported/plank.png-d70731fc82f225d8353819786c2ed28a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/physics_platformer/background/plankpin.png b/2d/layered_tile_maps/physics_platformer/background/plankpin.png new file mode 100644 index 0000000..20791d3 Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/background/plankpin.png differ diff --git a/2d/layered_tile_maps/physics_platformer/background/plankpin.png.import b/2d/layered_tile_maps/physics_platformer/background/plankpin.png.import new file mode 100644 index 0000000..8cd0811 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/background/plankpin.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ci8y3ieuf3ltc" +path="res://.godot/imported/plankpin.png-68d06cc4b9ab95f9d0142d1a4c768140.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://background/plankpin.png" +dest_files=["res://.godot/imported/plankpin.png-68d06cc4b9ab95f9d0142d1a4c768140.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/physics_platformer/background/scroll_bg_cloud_1.png b/2d/layered_tile_maps/physics_platformer/background/scroll_bg_cloud_1.png new file mode 100644 index 0000000..5f01d1b Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/background/scroll_bg_cloud_1.png differ diff --git a/2d/layered_tile_maps/physics_platformer/background/scroll_bg_cloud_1.png.import b/2d/layered_tile_maps/physics_platformer/background/scroll_bg_cloud_1.png.import new file mode 100644 index 0000000..59bf052 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/background/scroll_bg_cloud_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://udnu8aekj8mh" +path="res://.godot/imported/scroll_bg_cloud_1.png-19f55c25a7e1985c92542faa0106888e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://background/scroll_bg_cloud_1.png" +dest_files=["res://.godot/imported/scroll_bg_cloud_1.png-19f55c25a7e1985c92542faa0106888e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/physics_platformer/background/scroll_bg_cloud_2.png b/2d/layered_tile_maps/physics_platformer/background/scroll_bg_cloud_2.png new file mode 100644 index 0000000..68c985f Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/background/scroll_bg_cloud_2.png differ diff --git a/2d/layered_tile_maps/physics_platformer/background/scroll_bg_cloud_2.png.import b/2d/layered_tile_maps/physics_platformer/background/scroll_bg_cloud_2.png.import new file mode 100644 index 0000000..8c8ae68 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/background/scroll_bg_cloud_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://crkm8guj5obto" +path="res://.godot/imported/scroll_bg_cloud_2.png-869806dcc546591f3d754e3b845c61c9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://background/scroll_bg_cloud_2.png" +dest_files=["res://.godot/imported/scroll_bg_cloud_2.png-869806dcc546591f3d754e3b845c61c9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/physics_platformer/background/scroll_bg_cloud_3.png b/2d/layered_tile_maps/physics_platformer/background/scroll_bg_cloud_3.png new file mode 100644 index 0000000..998d6ff Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/background/scroll_bg_cloud_3.png differ diff --git a/2d/layered_tile_maps/physics_platformer/background/scroll_bg_cloud_3.png.import b/2d/layered_tile_maps/physics_platformer/background/scroll_bg_cloud_3.png.import new file mode 100644 index 0000000..d5e1014 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/background/scroll_bg_cloud_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bb8syr2l4kbwp" +path="res://.godot/imported/scroll_bg_cloud_3.png-831c6ed9fa8b4070081428a936bcc2f7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://background/scroll_bg_cloud_3.png" +dest_files=["res://.godot/imported/scroll_bg_cloud_3.png-831c6ed9fa8b4070081428a936bcc2f7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/physics_platformer/background/scroll_bg_fg_1.png b/2d/layered_tile_maps/physics_platformer/background/scroll_bg_fg_1.png new file mode 100644 index 0000000..08826e4 Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/background/scroll_bg_fg_1.png differ diff --git a/2d/layered_tile_maps/physics_platformer/background/scroll_bg_fg_1.png.import b/2d/layered_tile_maps/physics_platformer/background/scroll_bg_fg_1.png.import new file mode 100644 index 0000000..78ffe66 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/background/scroll_bg_fg_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bdhblhpgjebrc" +path="res://.godot/imported/scroll_bg_fg_1.png-20c90ebded5095c6863cdf6b1b82882d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://background/scroll_bg_fg_1.png" +dest_files=["res://.godot/imported/scroll_bg_fg_1.png-20c90ebded5095c6863cdf6b1b82882d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/physics_platformer/background/scroll_bg_fg_2.png b/2d/layered_tile_maps/physics_platformer/background/scroll_bg_fg_2.png new file mode 100644 index 0000000..e43baa9 Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/background/scroll_bg_fg_2.png differ diff --git a/2d/layered_tile_maps/physics_platformer/background/scroll_bg_fg_2.png.import b/2d/layered_tile_maps/physics_platformer/background/scroll_bg_fg_2.png.import new file mode 100644 index 0000000..24b9592 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/background/scroll_bg_fg_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bitu0xunnhbjf" +path="res://.godot/imported/scroll_bg_fg_2.png-2b54decd69e8aff2caa33640a336d1e9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://background/scroll_bg_fg_2.png" +dest_files=["res://.godot/imported/scroll_bg_fg_2.png-2b54decd69e8aff2caa33640a336d1e9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/physics_platformer/background/scroll_bg_sky.png b/2d/layered_tile_maps/physics_platformer/background/scroll_bg_sky.png new file mode 100644 index 0000000..13ba7b6 Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/background/scroll_bg_sky.png differ diff --git a/2d/layered_tile_maps/physics_platformer/background/scroll_bg_sky.png.import b/2d/layered_tile_maps/physics_platformer/background/scroll_bg_sky.png.import new file mode 100644 index 0000000..b8a0210 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/background/scroll_bg_sky.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://obtbrlptthky" +path="res://.godot/imported/scroll_bg_sky.png-377ea542199b2e23d7a822ed940ea99e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://background/scroll_bg_sky.png" +dest_files=["res://.godot/imported/scroll_bg_sky.png-377ea542199b2e23d7a822ed940ea99e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/physics_platformer/background/seesaw.tscn b/2d/layered_tile_maps/physics_platformer/background/seesaw.tscn new file mode 100644 index 0000000..2c48f79 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/background/seesaw.tscn @@ -0,0 +1,35 @@ +[gd_scene load_steps=5 format=3 uid="uid://rxbjx7rhfd8k"] + +[ext_resource type="Texture2D" uid="uid://c3w6uvr4jjkwa" path="res://background/plank.png" id="1"] +[ext_resource type="Texture2D" uid="uid://ci8y3ieuf3ltc" path="res://background/plankpin.png" id="2"] + +[sub_resource type="RectangleShape2D" id="1"] +size = Vector2(128, 8) + +[sub_resource type="RectangleShape2D" id="2"] +size = Vector2(16, 27) + +[node name="Seesaw" type="Node2D"] + +[node name="Plank" type="RigidBody2D" parent="."] +mass = 5.10204 + +[node name="Sprite2D" type="Sprite2D" parent="Plank"] +texture = ExtResource("1") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Plank"] +shape = SubResource("1") + +[node name="Pin" type="PinJoint2D" parent="."] +node_a = NodePath("../Plank") +node_b = NodePath("../Pillar") + +[node name="Pillar" type="StaticBody2D" parent="."] + +[node name="Sprite2D" type="Sprite2D" parent="Pillar"] +position = Vector2(0, 10) +texture = ExtResource("2") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Pillar"] +position = Vector2(0, 12.5) +shape = SubResource("2") diff --git a/2d/layered_tile_maps/physics_platformer/coin/coin.gd b/2d/layered_tile_maps/physics_platformer/coin/coin.gd new file mode 100644 index 0000000..6c83375 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/coin/coin.gd @@ -0,0 +1,8 @@ +class_name Coin +extends Area2D + +var taken = false + +func _on_body_enter(body): + if not taken and body is Player: + ($AnimationPlayer as AnimationPlayer).play("taken") diff --git a/2d/layered_tile_maps/physics_platformer/coin/coin.png b/2d/layered_tile_maps/physics_platformer/coin/coin.png new file mode 100644 index 0000000..2c966e5 Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/coin/coin.png differ diff --git a/2d/layered_tile_maps/physics_platformer/coin/coin.png.import b/2d/layered_tile_maps/physics_platformer/coin/coin.png.import new file mode 100644 index 0000000..8809e6b --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/coin/coin.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bio1crwbvrmc2" +path="res://.godot/imported/coin.png-c9e5c2f51b2a10beb2d794afbbee004f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://coin/coin.png" +dest_files=["res://.godot/imported/coin.png-c9e5c2f51b2a10beb2d794afbbee004f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/physics_platformer/coin/coin.tscn b/2d/layered_tile_maps/physics_platformer/coin/coin.tscn new file mode 100644 index 0000000..3c87ca0 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/coin/coin.tscn @@ -0,0 +1,140 @@ +[gd_scene load_steps=11 format=3 uid="uid://6uilf6rad880"] + +[ext_resource type="Script" path="res://coin/coin.gd" id="1"] +[ext_resource type="Texture2D" uid="uid://bio1crwbvrmc2" path="res://coin/coin.png" id="2"] +[ext_resource type="AudioStream" uid="uid://cy7lxrapbqu1r" path="res://audio/sound_coin.wav" id="3"] +[ext_resource type="Texture2D" uid="uid://7sv64orewgmb" path="res://player/bullet.png" id="4"] + +[sub_resource type="Animation" id="1"] +resource_name = "spin" +length = 1.5 +loop_mode = 1 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1, 1.25, 1.5), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 2, 1, 0] +} + +[sub_resource type="Animation" id="2"] +length = 8.0 +step = 0.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("GPUParticles3D:emitting") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/2/type = "method" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath(".") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(2.7), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"queue_free" +}] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Sound:playing") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Sprite2D:self_modulate") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 0.41), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_4atuj"] +_data = { +"spin": SubResource("1"), +"taken": SubResource("2") +} + +[sub_resource type="CircleShape2D" id="3"] +radius = 5.0 + +[sub_resource type="CanvasItemMaterial" id="4"] +blend_mode = 1 + +[sub_resource type="Curve" id="5"] + +[node name="Coin" type="Area2D"] +script = ExtResource("1") + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource("2") +hframes = 4 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "spin" +libraries = { +"": SubResource("AnimationLibrary_4atuj") +} + +[node name="Collision" type="CollisionShape2D" parent="."] +shape = SubResource("3") + +[node name="Sound" type="AudioStreamPlayer2D" parent="."] +stream = ExtResource("3") + +[node name="GPUParticles3D" type="CPUParticles2D" parent="."] +modulate = Color(0.596863, 0.638745, 1, 1) +material = SubResource("4") +emitting = false +one_shot = true +explosiveness = 0.7 +texture = ExtResource("4") +emission_shape = 1 +emission_sphere_radius = 20.0 +gravity = Vector2(0, 0) +scale_amount_curve = SubResource("5") + +[node name="Enabler" type="VisibleOnScreenEnabler2D" parent="."] +rect = Rect2(-5, -5, 10, 10) + +[connection signal="body_entered" from="." to="." method="_on_body_enter"] diff --git a/2d/layered_tile_maps/physics_platformer/enemy/enemy.gd b/2d/layered_tile_maps/physics_platformer/enemy/enemy.gd new file mode 100644 index 0000000..fd97abb --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/enemy/enemy.gd @@ -0,0 +1,88 @@ +class_name Enemy extends RigidBody2D + + +const WALK_SPEED = 50 + +enum State { + WALKING, + DYING, +} + +var _state := State.WALKING + +var direction := -1 +var anim := "" + +var Bullet := preload("res://player/bullet.gd") + +@onready var rc_left := $RaycastLeft as RayCast2D +@onready var rc_right := $RaycastRight as RayCast2D + + +func _integrate_forces(state: PhysicsDirectBodyState2D) -> void: + var velocity := state.get_linear_velocity() + var new_anim := anim + + if _state == State.DYING: + new_anim = "explode" + elif _state == State.WALKING: + new_anim = "walk" + + var wall_side := 0.0 + + for collider_index in state.get_contact_count(): + var collider := state.get_contact_collider_object(collider_index) + var collision_normal := state.get_contact_local_normal(collider_index) + + if collider is Bullet and not (collider as Bullet).disabled: + _bullet_collider.call_deferred(collider, state, collision_normal) + break + + if collision_normal.x > 0.9: + wall_side = 1.0 + elif collision_normal.x < -0.9: + wall_side = -1.0 + + if wall_side != 0 and wall_side != direction: + direction = -direction + ($Sprite2D as Sprite2D).scale.x = -direction + if direction < 0 and not rc_left.is_colliding() and rc_right.is_colliding(): + direction = -direction + ($Sprite2D as Sprite2D).scale.x = -direction + elif direction > 0 and not rc_right.is_colliding() and rc_left.is_colliding(): + direction = -direction + ($Sprite2D as Sprite2D).scale.x = -direction + + velocity.x = direction * WALK_SPEED + + if anim != new_anim: + anim = new_anim + ($AnimationPlayer as AnimationPlayer).play(anim) + + state.set_linear_velocity(velocity) + + +func _die() -> void: + queue_free() + + +func _pre_explode() -> void: + #make sure nothing collides against this + $Shape1.queue_free() + $Shape2.queue_free() + $Shape3.queue_free() + + ($SoundExplode as AudioStreamPlayer2D).play() + + +func _bullet_collider( + collider: Bullet, + state: PhysicsDirectBodyState2D, + collision_normal: Vector2 +) -> void: + _state = State.DYING + + state.set_angular_velocity(signf(collision_normal.x) * 33.0) + physics_material_override.friction = 1 + collider.disable() + ($SoundHit as AudioStreamPlayer2D).play() diff --git a/2d/layered_tile_maps/physics_platformer/enemy/enemy.png b/2d/layered_tile_maps/physics_platformer/enemy/enemy.png new file mode 100644 index 0000000..5fcf950 Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/enemy/enemy.png differ diff --git a/2d/layered_tile_maps/physics_platformer/enemy/enemy.png.import b/2d/layered_tile_maps/physics_platformer/enemy/enemy.png.import new file mode 100644 index 0000000..102cacd --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/enemy/enemy.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://crrmmbu8k46tl" +path="res://.godot/imported/enemy.png-1891d9038eeed672a2459bc4e7db5910.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://enemy/enemy.png" +dest_files=["res://.godot/imported/enemy.png-1891d9038eeed672a2459bc4e7db5910.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/physics_platformer/enemy/enemy.tscn b/2d/layered_tile_maps/physics_platformer/enemy/enemy.tscn new file mode 100644 index 0000000..93f4245 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/enemy/enemy.tscn @@ -0,0 +1,202 @@ +[gd_scene load_steps=14 format=3 uid="uid://daqqtote00syu"] + +[ext_resource type="Script" path="res://enemy/enemy.gd" id="1_hjwkx"] +[ext_resource type="Texture2D" uid="uid://crrmmbu8k46tl" path="res://enemy/enemy.png" id="2_org2d"] +[ext_resource type="Texture2D" uid="uid://7sv64orewgmb" path="res://player/bullet.png" id="3_7unrb"] +[ext_resource type="AudioStream" uid="uid://cfssio7r2t7wq" path="res://audio/sound_hit.wav" id="4_5rkwm"] +[ext_resource type="AudioStream" uid="uid://bulmr2lpb7y4h" path="res://audio/sound_explode.wav" id="5_t2e2f"] + +[sub_resource type="PhysicsMaterial" id="1"] + +[sub_resource type="Animation" id="Animation_a7qal"] +resource_name = "RESET" +length = 0.01 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:self_modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} + +[sub_resource type="Animation" id="2"] +length = 6.0 +step = 0.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [4] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Explosion:emitting") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(1), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/2/type = "method" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath(".") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(1.04, 2), +"transitions": PackedFloat32Array(1, 1), +"values": [{ +"args": [], +"method": &"_pre_explode" +}, { +"args": [], +"method": &"_die" +}] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Sprite2D:self_modulate") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.5, 1.1), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)] +} + +[sub_resource type="Animation" id="3"] +length = 6.75 +loop_mode = 1 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.75, 1.5, 2.25, 3, 3.75, 4.5, 5.25, 6, 6.75), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [5, 6, 5, 6, 5, 6, 7, 6, 7, 5] +} + +[sub_resource type="Animation" id="4"] +length = 1.25 +loop_mode = 1 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1, 1.25), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 0] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_ay0tp"] +_data = { +"RESET": SubResource("Animation_a7qal"), +"explode": SubResource("2"), +"idle": SubResource("3"), +"walk": SubResource("4") +} + +[sub_resource type="CircleShape2D" id="5"] +radius = 7.0 + +[sub_resource type="Gradient" id="6"] +offsets = PackedFloat32Array(0.5, 1) +colors = PackedColorArray(1, 1, 1, 0.501961, 0, 0, 0, 0) + +[node name="Enemy" type="RigidBody2D"] +physics_material_override = SubResource("1") +max_contacts_reported = 4 +contact_monitor = true +lock_rotation = true +script = ExtResource("1_hjwkx") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_ay0tp") +} + +[node name="SoundExplode" type="AudioStreamPlayer2D" parent="."] +stream = ExtResource("5_t2e2f") + +[node name="SoundHit" type="AudioStreamPlayer2D" parent="."] +position = Vector2(0, -1) +stream = ExtResource("4_5rkwm") + +[node name="VisibleOnScreenEnabler2D" type="VisibleOnScreenEnabler2D" parent="."] +rect = Rect2(-150, -100, 300, 200) + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource("2_org2d") +hframes = 8 + +[node name="Shape1" type="CollisionShape2D" parent="."] +position = Vector2(-0.54036, -1.08072) +shape = SubResource("5") + +[node name="Shape2" type="CollisionShape2D" parent="."] +position = Vector2(3.24216, 1.62108) +shape = SubResource("5") + +[node name="Shape3" type="CollisionShape2D" parent="."] +position = Vector2(-6.2475, 1.76707) +shape = SubResource("5") + +[node name="RaycastLeft" type="RayCast2D" parent="."] +position = Vector2(-14, -4.672) + +[node name="RaycastRight" type="RayCast2D" parent="."] +position = Vector2(11, -4.672) + +[node name="Explosion" type="CPUParticles2D" parent="."] +modulate = Color(1, 1, 1, 0.685843) +emitting = false +amount = 32 +lifetime = 0.5 +one_shot = true +speed_scale = 1.2 +explosiveness = 0.76 +texture = ExtResource("3_7unrb") +emission_shape = 1 +emission_sphere_radius = 8.0 +spread = 180.0 +gravity = Vector2(0, 0) +color_ramp = SubResource("6") diff --git a/2d/layered_tile_maps/physics_platformer/icon.webp b/2d/layered_tile_maps/physics_platformer/icon.webp new file mode 100644 index 0000000..5738e21 Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/icon.webp differ diff --git a/2d/layered_tile_maps/physics_platformer/icon.webp.import b/2d/layered_tile_maps/physics_platformer/icon.webp.import new file mode 100644 index 0000000..29730c1 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/icon.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://upnbycigfu4k" +path="res://.godot/imported/icon.webp-e94f9a68b0f625a567a797079e4d325f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.webp" +dest_files=["res://.godot/imported/icon.webp-e94f9a68b0f625a567a797079e4d325f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/physics_platformer/platform/moving_platform.png b/2d/layered_tile_maps/physics_platformer/platform/moving_platform.png new file mode 100644 index 0000000..d74281a Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/platform/moving_platform.png differ diff --git a/2d/layered_tile_maps/physics_platformer/platform/moving_platform.png.import b/2d/layered_tile_maps/physics_platformer/platform/moving_platform.png.import new file mode 100644 index 0000000..9a28b89 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/platform/moving_platform.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cde7btbdorp8f" +path="res://.godot/imported/moving_platform.png-7e92061cd93e8b0235df711d3782cd8c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://platform/moving_platform.png" +dest_files=["res://.godot/imported/moving_platform.png-7e92061cd93e8b0235df711d3782cd8c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/physics_platformer/platform/moving_platform.tscn b/2d/layered_tile_maps/physics_platformer/platform/moving_platform.tscn new file mode 100644 index 0000000..199f298 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/platform/moving_platform.tscn @@ -0,0 +1,11 @@ +[gd_scene load_steps=2 format=3 uid="uid://dtbrdmojpvetu"] + +[ext_resource type="Texture2D" uid="uid://cde7btbdorp8f" path="res://platform/moving_platform.png" id="2"] + +[node name="MovingPlatform" type="CharacterBody2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource("2") + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."] +polygon = PackedVector2Array(-44, -12, 44, -12, 44, 12, -44, 12) diff --git a/2d/layered_tile_maps/physics_platformer/platform/one_way_platform.png b/2d/layered_tile_maps/physics_platformer/platform/one_way_platform.png new file mode 100644 index 0000000..f5837a3 Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/platform/one_way_platform.png differ diff --git a/2d/layered_tile_maps/physics_platformer/platform/one_way_platform.png.import b/2d/layered_tile_maps/physics_platformer/platform/one_way_platform.png.import new file mode 100644 index 0000000..88e6b44 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/platform/one_way_platform.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c15sicsdamq2o" +path="res://.godot/imported/one_way_platform.png-2865772e209813c1636a14aee8d019a3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://platform/one_way_platform.png" +dest_files=["res://.godot/imported/one_way_platform.png-2865772e209813c1636a14aee8d019a3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/physics_platformer/platform/one_way_platform.tscn b/2d/layered_tile_maps/physics_platformer/platform/one_way_platform.tscn new file mode 100644 index 0000000..94a2ee6 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/platform/one_way_platform.tscn @@ -0,0 +1,16 @@ +[gd_scene load_steps=3 format=3 uid="uid://dkmxopg1dknq8"] + +[ext_resource type="Texture2D" uid="uid://c15sicsdamq2o" path="res://platform/one_way_platform.png" id="1"] + +[sub_resource type="RectangleShape2D" id="1"] +size = Vector2(110, 10) + +[node name="OneWayPlatform" type="StaticBody2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource("1") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2(0.73152, -6.5836) +shape = SubResource("1") +one_way_collision = true diff --git a/2d/layered_tile_maps/physics_platformer/player/bullet.gd b/2d/layered_tile_maps/physics_platformer/player/bullet.gd new file mode 100644 index 0000000..07e286b --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/player/bullet.gd @@ -0,0 +1,15 @@ +class_name Bullet +extends RigidBody2D + +var disabled = false + +func _ready(): + ($Timer as Timer).start() + + +func disable(): + if disabled: + return + + ($AnimationPlayer as AnimationPlayer).play("shutdown") + disabled = true diff --git a/2d/layered_tile_maps/physics_platformer/player/bullet.png b/2d/layered_tile_maps/physics_platformer/player/bullet.png new file mode 100644 index 0000000..f8e0168 Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/player/bullet.png differ diff --git a/2d/layered_tile_maps/physics_platformer/player/bullet.png.import b/2d/layered_tile_maps/physics_platformer/player/bullet.png.import new file mode 100644 index 0000000..504f371 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/player/bullet.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://7sv64orewgmb" +path="res://.godot/imported/bullet.png-5615cb9904aab8db60fe6f48e996475f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://player/bullet.png" +dest_files=["res://.godot/imported/bullet.png-5615cb9904aab8db60fe6f48e996475f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/physics_platformer/player/bullet.tscn b/2d/layered_tile_maps/physics_platformer/player/bullet.tscn new file mode 100644 index 0000000..7d0e79e --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/player/bullet.tscn @@ -0,0 +1,82 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://player/bullet.gd" type="Script" id=1] +[ext_resource path="res://player/bullet.png" type="Texture2D" id=2] + +[sub_resource type="CanvasItemMaterial" id=1] +blend_mode = 1 + +[sub_resource type="CircleShape2D" id=2] +radius = 4.5 + +[sub_resource type="Animation" id=3] +length = 1.5 +tracks/0/type = "method" +tracks/0/path = NodePath(".") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PackedFloat32Array(1.31), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": "queue_free" +}] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite2D:modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 1.03), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)] +} +tracks/2/type = "value" +tracks/2/path = NodePath("GPUParticles2D:self_modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)] +} + +[node name="Bullet" type="RigidDynamicBody2D"] +continuous_cd = 2 +script = ExtResource( 1 ) + +[node name="GPUParticles2D" type="CPUParticles2D" parent="."] +material = SubResource( 1 ) +emitting = false +lifetime = 0.3 +speed_scale = 3.0 +local_coords = false +texture = ExtResource( 2 ) +spread = 0.0 +gravity = Vector2(0, 0) +initial_velocity = 1.0 +angular_velocity = 38.0 +scale_amount = 0.8 + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource( 2 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 2 ) + +[node name="Timer" type="Timer" parent="."] +one_shot = true + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/shutdown = SubResource( 3 ) + +[connection signal="timeout" from="Timer" to="." method="disable"] diff --git a/2d/layered_tile_maps/physics_platformer/player/osb_fire.png b/2d/layered_tile_maps/physics_platformer/player/osb_fire.png new file mode 100644 index 0000000..1d7ed2d Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/player/osb_fire.png differ diff --git a/2d/layered_tile_maps/physics_platformer/player/osb_fire.png.import b/2d/layered_tile_maps/physics_platformer/player/osb_fire.png.import new file mode 100644 index 0000000..40e453f --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/player/osb_fire.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dfaohortmfvm7" +path="res://.godot/imported/osb_fire.png-67a49910acd764fd7c67429af0ad5cb8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://player/osb_fire.png" +dest_files=["res://.godot/imported/osb_fire.png-67a49910acd764fd7c67429af0ad5cb8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/physics_platformer/player/osb_jump.png b/2d/layered_tile_maps/physics_platformer/player/osb_jump.png new file mode 100644 index 0000000..819ba61 Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/player/osb_jump.png differ diff --git a/2d/layered_tile_maps/physics_platformer/player/osb_jump.png.import b/2d/layered_tile_maps/physics_platformer/player/osb_jump.png.import new file mode 100644 index 0000000..bdc4381 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/player/osb_jump.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c7ymjckh78mib" +path="res://.godot/imported/osb_jump.png-0d4d2b2d1a7d2c11e3e4fd800b8589ed.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://player/osb_jump.png" +dest_files=["res://.godot/imported/osb_jump.png-0d4d2b2d1a7d2c11e3e4fd800b8589ed.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/physics_platformer/player/osb_left.png b/2d/layered_tile_maps/physics_platformer/player/osb_left.png new file mode 100644 index 0000000..60e48d6 Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/player/osb_left.png differ diff --git a/2d/layered_tile_maps/physics_platformer/player/osb_left.png.import b/2d/layered_tile_maps/physics_platformer/player/osb_left.png.import new file mode 100644 index 0000000..ea323c6 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/player/osb_left.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dx42eijx3d7df" +path="res://.godot/imported/osb_left.png-95ec3a371455889d592aa8cae0a755bc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://player/osb_left.png" +dest_files=["res://.godot/imported/osb_left.png-95ec3a371455889d592aa8cae0a755bc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/physics_platformer/player/osb_right.png b/2d/layered_tile_maps/physics_platformer/player/osb_right.png new file mode 100644 index 0000000..8f0c57c Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/player/osb_right.png differ diff --git a/2d/layered_tile_maps/physics_platformer/player/osb_right.png.import b/2d/layered_tile_maps/physics_platformer/player/osb_right.png.import new file mode 100644 index 0000000..7ea33fd --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/player/osb_right.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dykiknf7km7u4" +path="res://.godot/imported/osb_right.png-db9bb4651315f3d42b87bd17a86cce76.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://player/osb_right.png" +dest_files=["res://.godot/imported/osb_right.png-db9bb4651315f3d42b87bd17a86cce76.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/physics_platformer/player/player.gd b/2d/layered_tile_maps/physics_platformer/player/player.gd new file mode 100644 index 0000000..964dd9d --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/player/player.gd @@ -0,0 +1,208 @@ +class_name Player extends RigidBody2D + + +const WALK_ACCEL = 500.0 +const WALK_DEACCEL = 500.0 +const WALK_MAX_VELOCITY = 140.0 +const AIR_ACCEL = 100.0 +const AIR_DEACCEL = 100.0 +const JUMP_VELOCITY = 380 +const STOP_JUMP_FORCE = 450.0 +const MAX_SHOOT_POSE_TIME = 0.3 +const MAX_FLOOR_AIRBORNE_TIME = 0.15 + +var anim := "" +var siding_left := false +var jumping := false +var stopping_jump := false +var shooting := false + +var floor_h_velocity: float = 0.0 + +var airborne_time: float = 1e20 +var shoot_time: float = 1e20 + +var Bullet := preload("res://player/bullet.tscn") +var Enemy := preload("res://enemy/enemy.tscn") + +@onready var sound_jump := $SoundJump as AudioStreamPlayer2D +@onready var sound_shoot := $SoundShoot as AudioStreamPlayer2D +@onready var sprite := $Sprite2D as Sprite2D +@onready var sprite_smoke := sprite.get_node(^"Smoke") as CPUParticles2D +@onready var animation_player := $AnimationPlayer as AnimationPlayer +@onready var bullet_shoot := $BulletShoot as Marker2D + + +func _integrate_forces(state: PhysicsDirectBodyState2D) -> void: + var velocity := state.get_linear_velocity() + var step := state.get_step() + + var new_anim := anim + var new_siding_left := siding_left + + # Get player input. + var move_left := Input.is_action_pressed(&"move_left") + var move_right := Input.is_action_pressed(&"move_right") + var jump := Input.is_action_pressed(&"jump") + var shoot := Input.is_action_pressed(&"shoot") + var spawn := Input.is_action_pressed(&"spawn") + + if spawn: + _spawn_enemy_above.call_deferred() + + # Deapply prev floor velocity. + velocity.x -= floor_h_velocity + floor_h_velocity = 0.0 + + # Find the floor (a contact with upwards facing collision normal). + var found_floor := false + var floor_index := -1 + + for contact_index in state.get_contact_count(): + var collision_normal = state.get_contact_local_normal(contact_index) + + if collision_normal.dot(Vector2(0, -1)) > 0.6: + found_floor = true + floor_index = contact_index + + # A good idea when implementing characters of all kinds, + # compensates for physics imprecision, as well as human reaction delay. + if shoot and not shooting: + _shot_bullet.call_deferred() + else: + shoot_time += step + + if found_floor: + airborne_time = 0.0 + else: + airborne_time += step # Time it spent in the air. + + var on_floor := airborne_time < MAX_FLOOR_AIRBORNE_TIME + + # Process jump. + if jumping: + if velocity.y > 0: + # Set off the jumping flag if going down. + jumping = false + elif not jump: + stopping_jump = true + + if stopping_jump: + velocity.y += STOP_JUMP_FORCE * step + + if on_floor: + # Process logic when character is on floor. + if move_left and not move_right: + if velocity.x > -WALK_MAX_VELOCITY: + velocity.x -= WALK_ACCEL * step + elif move_right and not move_left: + if velocity.x < WALK_MAX_VELOCITY: + velocity.x += WALK_ACCEL * step + else: + var xv := absf(velocity.x) + xv -= WALK_DEACCEL * step + if xv < 0: + xv = 0 + velocity.x = signf(velocity.x) * xv + + # Check jump. + if not jumping and jump: + velocity.y = -JUMP_VELOCITY + jumping = true + stopping_jump = false + sound_jump.play() + + # Check siding. + if velocity.x < 0 and move_left: + new_siding_left = true + elif velocity.x > 0 and move_right: + new_siding_left = false + if jumping: + new_anim = "jumping" + elif absf(velocity.x) < 0.1: + if shoot_time < MAX_SHOOT_POSE_TIME: + new_anim = "idle_weapon" + else: + new_anim = "idle" + else: + if shoot_time < MAX_SHOOT_POSE_TIME: + new_anim = "run_weapon" + else: + new_anim = "run" + else: + # Process logic when the character is in the air. + if move_left and not move_right: + if velocity.x > -WALK_MAX_VELOCITY: + velocity.x -= AIR_ACCEL * step + elif move_right and not move_left: + if velocity.x < WALK_MAX_VELOCITY: + velocity.x += AIR_ACCEL * step + else: + var xv := absf(velocity.x) + xv -= AIR_DEACCEL * step + + if xv < 0: + xv = 0 + velocity.x = signf(velocity.x) * xv + + if velocity.y < 0: + if shoot_time < MAX_SHOOT_POSE_TIME: + new_anim = "jumping_weapon" + else: + new_anim = "jumping" + else: + if shoot_time < MAX_SHOOT_POSE_TIME: + new_anim = "falling_weapon" + else: + new_anim = "falling" + + # Update siding. + if new_siding_left != siding_left: + if new_siding_left: + sprite.scale.x = -1 + else: + sprite.scale.x = 1 + + siding_left = new_siding_left + + # Change animation. + if new_anim != anim: + anim = new_anim + animation_player.play(anim) + + shooting = shoot + + # Apply floor velocity. + if found_floor: + floor_h_velocity = state.get_contact_collider_velocity_at_position(floor_index).x + velocity.x += floor_h_velocity + + # Finally, apply gravity and set back the linear velocity. + velocity += state.get_total_gravity() * step + state.set_linear_velocity(velocity) + + +func _shot_bullet() -> void: + shoot_time = 0 + var bullet := Bullet.instantiate() as RigidBody2D + var speed_scale: float + if siding_left: + speed_scale = -1.0 + else: + speed_scale = 1.0 + + bullet.position = self.position + bullet_shoot.position * Vector2(speed_scale, 1.0) + get_parent().add_child(bullet) + + bullet.linear_velocity = Vector2(400.0 * speed_scale, -40) + + sprite_smoke.restart() + sound_shoot.play() + + add_collision_exception_with(bullet) # Make bullet and this not collide. + + +func _spawn_enemy_above() -> void: + var enemy := Enemy.instantiate() as RigidBody2D + enemy.position = self.position + 50 * Vector2.UP + get_parent().add_child(enemy) diff --git a/2d/layered_tile_maps/physics_platformer/player/player.tscn b/2d/layered_tile_maps/physics_platformer/player/player.tscn new file mode 100644 index 0000000..12eb420 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/player/player.tscn @@ -0,0 +1,273 @@ +[gd_scene load_steps=20 format=3 uid="uid://bbxsp4gp554vh"] + +[ext_resource type="Script" path="res://player/player.gd" id="1"] +[ext_resource type="Texture2D" uid="uid://dh57uloeigwj6" path="res://player/player.webp" id="2_675nc"] +[ext_resource type="Texture2D" uid="uid://7sv64orewgmb" path="res://player/bullet.png" id="3"] +[ext_resource type="AudioStream" uid="uid://gw2a4ii0oby2" path="res://audio/sound_shoot.wav" id="8"] +[ext_resource type="AudioStream" uid="uid://bpyko2i13mj0v" path="res://audio/sound_jump.wav" id="9"] + +[sub_resource type="PhysicsMaterial" id="1"] +friction = 0.0 + +[sub_resource type="Gradient" id="2"] +colors = PackedColorArray(0.708353, 0.72498, 1, 1, 1, 1, 1, 0) + +[sub_resource type="Animation" id="3"] +length = 0.01 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [22] +} + +[sub_resource type="Animation" id="4"] +length = 0.01 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [21] +} + +[sub_resource type="Animation" id="5"] +length = 0.5 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [26] +} + +[sub_resource type="Animation" id="6"] +length = 7.0 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 1.25, 1.5, 2, 4.5, 4.75, 5, 5.25), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [16, 17, 18, 16, 19, 20, 19, 16] +} + +[sub_resource type="Animation" id="7"] +length = 0.5 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [25] +} + +[sub_resource type="Animation" id="8"] +length = 0.5 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.25, 0.5), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [23, 24, 23] +} + +[sub_resource type="Animation" id="9"] +length = 0.5 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [26] +} + +[sub_resource type="Animation" id="10"] +length = 1.25 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1, 1.25), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 0] +} + +[sub_resource type="Animation" id="11"] +length = 1.25 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1, 1.25), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 1, +"values": [5, 6, 7, 8, 9, 5] +} + +[sub_resource type="Animation" id="12"] +length = 1.25 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1, 1.25), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 1, +"values": [10, 11, 12, 13, 14, 5] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_30623"] +_data = { +"crouch": SubResource("3"), +"falling": SubResource("4"), +"falling_weapon": SubResource("5"), +"idle": SubResource("6"), +"idle_weapon": SubResource("7"), +"jumping": SubResource("8"), +"jumping_weapon": SubResource("9"), +"run": SubResource("10"), +"run_weapon": SubResource("11"), +"standing_weapon_ready": SubResource("12") +} + +[sub_resource type="SeparationRayShape2D" id="13"] +custom_solver_bias = 0.5 +length = 18.0 + +[node name="Player" type="RigidBody2D"] +mass = 1.5 +physics_material_override = SubResource("1") +custom_integrator = true +max_contacts_reported = 4 +contact_monitor = true +lock_rotation = true +script = ExtResource("1") + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource("2_675nc") +hframes = 16 +vframes = 2 + +[node name="Smoke" type="CPUParticles2D" parent="Sprite2D"] +self_modulate = Color(1, 1, 1, 0.26702) +position = Vector2(10, 1.5) +rotation = -1.45648 +emitting = false +lifetime = 0.3 +one_shot = true +explosiveness = 1.0 +texture = ExtResource("3") +spread = 65.84 +gravity = Vector2(0, -15) +color_ramp = SubResource("2") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_30623") +} + +[node name="Camera2D" type="Camera2D" parent="."] +zoom = Vector2(2, 2) +limit_left = 0 +limit_top = 0 + +[node name="BulletShoot" type="Marker2D" parent="."] +position = Vector2(15, 2) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2(0.15, -6) +shape = SubResource("13") + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."] +polygon = PackedVector2Array(-0.138, 8.25, -10, -12, 11, -12) + +[node name="UI" type="CanvasLayer" parent="."] +layer = 0 + +[node name="Left" type="TouchScreenButton" parent="UI"] +position = Vector2(27.7593, 360.87) +scale = Vector2(1.49157, 1.46265) +passby_press = true +action = "move_left" +visibility_mode = 1 + +[node name="Right" type="TouchScreenButton" parent="UI"] +position = Vector2(121.542, 361.415) +scale = Vector2(1.49157, 1.46265) +passby_press = true +action = "move_right" +visibility_mode = 1 + +[node name="Jump" type="TouchScreenButton" parent="UI"] +position = Vector2(666.224, 359.02) +scale = Vector2(1.49157, 1.46265) +action = "jump" +visibility_mode = 1 + +[node name="Fire" type="TouchScreenButton" parent="UI"] +position = Vector2(668.073, 262.788) +scale = Vector2(1.49157, 1.46265) +action = "shoot" +visibility_mode = 1 + +[node name="SoundShoot" type="AudioStreamPlayer2D" parent="."] +stream = ExtResource("8") + +[node name="SoundJump" type="AudioStreamPlayer2D" parent="."] +stream = ExtResource("9") diff --git a/2d/layered_tile_maps/physics_platformer/player/player.webp b/2d/layered_tile_maps/physics_platformer/player/player.webp new file mode 100644 index 0000000..f5969fd Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/player/player.webp differ diff --git a/2d/layered_tile_maps/physics_platformer/player/player.webp.import b/2d/layered_tile_maps/physics_platformer/player/player.webp.import new file mode 100644 index 0000000..c1de455 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/player/player.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dh57uloeigwj6" +path="res://.godot/imported/player.webp-f8efd9c2246a95708b9c4853ed21513e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://player/player.webp" +dest_files=["res://.godot/imported/player.webp-f8efd9c2246a95708b9c4853ed21513e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/physics_platformer/project.godot b/2d/layered_tile_maps/physics_platformer/project.godot new file mode 100644 index 0000000..d91a04f --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/project.godot @@ -0,0 +1,112 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="Physics-Based Platformer 2D" +config/description="This demo uses RigidDynamicBody2D for the player and enemies. These +character controllers are more powerful than CharacterBody2D, +but can be more difficult to handle, as they require +manual modification of the RigidDynamicBody3D velocity." +config/tags=PackedStringArray("2d", "demo", "official", "physics", "tilemap") +run/main_scene="res://stage.tscn" +config/features=PackedStringArray("4.2") +config/icon="res://icon.webp" + +[debug] + +gdscript/warnings/unsafe_property_access=true +gdscript/warnings/unsafe_method_access=true +gdscript/warnings/unsafe_cast=true +gdscript/warnings/unsafe_call_argument=true +gdscript/completion/autocomplete_setters_and_getters=true + +[display] + +window/size/viewport_width=800 +window/size/viewport_height=480 +window/stretch/mode="canvas_items" +window/stretch/aspect="keep_height" + +[importer_defaults] + +texture={ +"compress/bptc_ldr": 0, +"compress/hdr_mode": 0, +"compress/lossy_quality": 0.7, +"compress/mode": 0, +"compress/normal_map": 0, +"detect_3d": false, +"flags/anisotropic": false, +"flags/filter": false, +"flags/mipmaps": false, +"flags/repeat": 0, +"flags/srgb": 2, +"process/HDR_as_SRGB": false, +"process/fix_alpha_border": true, +"process/invert_color": false, +"process/premult_alpha": false, +"size_limit": 0, +"stream": false, +"svg/scale": 1.0 +} + +[input] + +jump={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777232,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":87,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} +move_left={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777231,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":65,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null) +] +} +move_right={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777233,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":68,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null) +] +} +shoot={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":2,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":90,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":7,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"double_click":false,"script":null) +] +} +spawn={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777244,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null) +] +} + +[physics] + +2d/default_gravity=900 + +[rendering] + +textures/canvas_textures/default_texture_filter=0 + +[texture_import] + +filter=false diff --git a/2d/layered_tile_maps/physics_platformer/screenshots/.gdignore b/2d/layered_tile_maps/physics_platformer/screenshots/.gdignore new file mode 100644 index 0000000..e69de29 diff --git a/2d/layered_tile_maps/physics_platformer/screenshots/beginning.png b/2d/layered_tile_maps/physics_platformer/screenshots/beginning.png new file mode 100644 index 0000000..4653589 Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/screenshots/beginning.png differ diff --git a/2d/layered_tile_maps/physics_platformer/screenshots/seesaw-riding.png b/2d/layered_tile_maps/physics_platformer/screenshots/seesaw-riding.png new file mode 100644 index 0000000..d7439e0 Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/screenshots/seesaw-riding.png differ diff --git a/2d/layered_tile_maps/physics_platformer/stage.tscn b/2d/layered_tile_maps/physics_platformer/stage.tscn new file mode 100644 index 0000000..4c8f2dd --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/stage.tscn @@ -0,0 +1,359 @@ +[gd_scene load_steps=24 format=3 uid="uid://b53muvlsw1tx3"] + +[ext_resource type="TileSet" uid="uid://rowrak7ls50v" path="res://tileset.tres" id="1"] +[ext_resource type="PackedScene" uid="uid://6uilf6rad880" path="res://coin/coin.tscn" id="2"] +[ext_resource type="PackedScene" uid="uid://dtbrdmojpvetu" path="res://platform/moving_platform.tscn" id="3"] +[ext_resource type="PackedScene" uid="uid://rxbjx7rhfd8k" path="res://background/seesaw.tscn" id="4"] +[ext_resource type="PackedScene" uid="uid://dkmxopg1dknq8" path="res://platform/one_way_platform.tscn" id="5"] +[ext_resource type="PackedScene" uid="uid://bbxsp4gp554vh" path="res://player/player.tscn" id="6_fauva"] +[ext_resource type="PackedScene" uid="uid://daqqtote00syu" path="res://enemy/enemy.tscn" id="7"] +[ext_resource type="PackedScene" uid="uid://csdn3dwkaprow" path="res://background/parallax_bg.tscn" id="8"] +[ext_resource type="AudioStream" uid="uid://gunv00cij80t" path="res://audio/music.ogg" id="9"] + +[sub_resource type="Animation" id="Animation_oxal6"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("MovingPlatform2:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(438, 272)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("MovingPlatform3:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1554, 369)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("MovingPlatform1:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(725, 439)] +} + +[sub_resource type="Animation" id="Animation_vjtqx"] +resource_name = "move" +length = 6.0 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("MovingPlatform1:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 3), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(725, 439), Vector2(725, 304)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("MovingPlatform2:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 3), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(438, 272), Vector2(137, 272)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("MovingPlatform3:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 3), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(1490, 369), Vector2(1905, 369)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_el48w"] +_data = { +"RESET": SubResource("Animation_oxal6"), +"move": SubResource("Animation_vjtqx") +} + +[sub_resource type="PhysicsMaterial" id="2"] + +[sub_resource type="PhysicsMaterial" id="3"] +friction = 0.0 + +[sub_resource type="PhysicsMaterial" id="4"] +friction = 0.0 + +[sub_resource type="PhysicsMaterial" id="5"] +friction = 0.0 + +[sub_resource type="PhysicsMaterial" id="6"] + +[sub_resource type="PhysicsMaterial" id="7"] +friction = 0.0 + +[sub_resource type="PhysicsMaterial" id="8"] +friction = 0.0 + +[sub_resource type="PhysicsMaterial" id="9"] +friction = 0.0 + +[sub_resource type="PhysicsMaterial" id="10"] +friction = 0.0 + +[sub_resource type="PhysicsMaterial" id="11"] +friction = 0.0 + +[sub_resource type="PhysicsMaterial" id="12"] +friction = 0.0 + +[node name="Stage" type="Node2D"] + +[node name="TileMap" type="TileMap" parent="."] +position = Vector2(2, 0) +tile_set = ExtResource("1") +cell_quadrant_size = 4 +collision_visibility_mode = 1 +format = 2 +layer_0/tile_data = PackedInt32Array(0, 2, 0, 70, 2, 65536, 71, 10, 0, 72, 10, 0, 73, 10, 0, 74, 10, 0, 75, 10, 0, 76, 10, 0, 77, 10, 0, 78, 10, 0, 65536, 2, 0, 65606, 2, 65536, 65607, 10, 0, 65608, 10, 0, 65609, 10, 0, 65610, 10, 0, 65611, 10, 0, 65612, 10, 0, 65613, 10, 0, 65614, 10, 0, 131072, 2, 0, 131142, 2, 65536, 131143, 10, 0, 131144, 10, 0, 131145, 10, 0, 131146, 10, 0, 131147, 10, 0, 131148, 10, 0, 131149, 10, 0, 131150, 10, 0, 196608, 2, 0, 196626, 9, 0, 196678, 2, 65536, 196679, 10, 0, 196680, 10, 0, 196681, 10, 0, 196682, 10, 0, 196683, 10, 0, 196684, 10, 0, 196685, 10, 0, 196686, 10, 0, 262144, 2, 0, 262162, 8, 0, 262214, 2, 65536, 262215, 10, 0, 262216, 10, 0, 262217, 10, 0, 262218, 10, 0, 262219, 10, 0, 262220, 10, 0, 262221, 10, 0, 262222, 10, 0, 327680, 2, 0, 327697, 9, 65536, 327698, 7, 0, 327733, 9, 0, 327750, 2, 65536, 327751, 10, 0, 327752, 10, 0, 327753, 10, 0, 327754, 10, 0, 327755, 10, 0, 327756, 10, 0, 327757, 10, 0, 327758, 10, 0, 393216, 2, 0, 393233, 8, 65536, 393234, 7, 0, 393257, 9, 0, 393269, 7, 0, 393286, 2, 65536, 393287, 10, 0, 393288, 10, 0, 393289, 10, 0, 393290, 10, 0, 393291, 10, 0, 393292, 10, 0, 393293, 10, 0, 393294, 10, 0, 458752, 2, 0, 458769, 7, 0, 458770, 8, 0, 458790, 9, 0, 458793, 8, 0, 458805, 8, 0, 458822, 2, 65536, 458823, 10, 0, 458824, 10, 0, 458825, 10, 0, 458826, 10, 0, 458827, 10, 0, 458828, 10, 0, 458829, 10, 0, 458830, 10, 0, 524288, 4, 0, 524289, 1, 0, 524304, 1, 65536, 524305, 6, 65536, 524306, 6, 0, 524307, 5, 0, 524308, 1, 0, 524326, 8, 0, 524329, 7, 0, 524341, 7, 0, 524358, 2, 65536, 524359, 10, 0, 524360, 10, 0, 524361, 10, 0, 524362, 10, 0, 524363, 10, 0, 524364, 10, 0, 524365, 10, 0, 524366, 10, 0, 589824, 10, 0, 589825, 13, 0, 589840, 2, 65536, 589841, 10, 0, 589842, 10, 0, 589843, 10, 0, 589844, 2, 0, 589862, 7, 0, 589865, 7, 0, 589876, 1, 65536, 589877, 6, 0, 589878, 1, 0, 589894, 2, 65536, 589895, 10, 0, 589896, 10, 0, 589897, 10, 0, 589898, 10, 0, 589899, 10, 0, 589900, 10, 0, 589901, 10, 0, 589902, 10, 0, 655360, 2, 0, 655376, 2, 65536, 655377, 10, 0, 655378, 10, 0, 655379, 10, 0, 655380, 2, 0, 655398, 7, 0, 655401, 8, 0, 655412, 13, 65536, 655413, 11, 0, 655414, 13, 0, 655430, 2, 65536, 655431, 10, 0, 655432, 10, 0, 655433, 10, 0, 655434, 10, 0, 655435, 10, 0, 655436, 10, 0, 655437, 10, 0, 655438, 10, 0, 720896, 2, 0, 720912, 2, 65536, 720913, 10, 0, 720914, 10, 0, 720915, 10, 0, 720916, 2, 0, 720934, 8, 0, 720937, 7, 0, 720958, 1, 65536, 720959, 5, 0, 720960, 5, 65536, 720961, 5, 0, 720962, 5, 0, 720963, 5, 65536, 720964, 5, 0, 720965, 0, 0, 720966, 4, 65536, 720967, 10, 0, 720968, 10, 0, 720969, 10, 0, 720970, 10, 0, 720971, 10, 0, 720972, 10, 0, 720973, 10, 0, 720974, 10, 0, 786432, 2, 0, 786437, 9, 0, 786448, 2, 65536, 786449, 10, 0, 786450, 10, 0, 786451, 10, 0, 786452, 2, 0, 786464, 1, 65536, 786465, 1, 0, 786470, 7, 0, 786473, 7, 0, 786474, 12, 65536, 786475, 1, 0, 786494, 2, 65536, 786495, 10, 0, 786496, 10, 0, 786497, 10, 0, 786498, 10, 0, 786499, 10, 0, 786500, 10, 0, 786501, 10, 0, 786502, 10, 0, 786503, 10, 0, 786504, 10, 0, 786505, 10, 0, 786506, 10, 0, 786507, 10, 0, 786508, 10, 0, 786509, 10, 0, 851968, 2, 0, 851973, 7, 0, 851984, 2, 65536, 851985, 10, 0, 851986, 10, 0, 851987, 10, 0, 851988, 2, 0, 851996, 1, 65536, 851997, 1, 0, 852000, 2, 65536, 852006, 7, 0, 852009, 6, 0, 852011, 2, 0, 852030, 2, 65536, 852031, 10, 0, 852032, 10, 0, 852033, 10, 0, 852034, 10, 0, 852035, 10, 0, 852036, 10, 0, 852037, 10, 0, 852038, 10, 0, 852039, 10, 0, 852040, 10, 0, 852041, 10, 0, 852042, 10, 0, 852043, 10, 0, 852044, 10, 0, 852045, 10, 0, 917504, 2, 0, 917506, 9, 0, 917509, 7, 0, 917512, 9, 65536, 917520, 13, 65536, 917521, 11, 0, 917522, 11, 0, 917523, 11, 0, 917524, 13, 0, 917532, 13, 65536, 917533, 13, 0, 917536, 2, 65536, 917537, 4, 0, 917538, 1, 0, 917540, 1, 65536, 917541, 0, 0, 917542, 6, 0, 917545, 10, 0, 917546, 10, 0, 917547, 4, 0, 917548, 1, 0, 917566, 2, 65536, 917567, 10, 0, 917568, 10, 0, 917569, 10, 0, 917570, 10, 0, 917571, 10, 0, 917572, 10, 0, 917573, 10, 0, 917574, 10, 0, 917575, 10, 0, 917576, 10, 0, 917577, 10, 0, 917578, 10, 0, 917579, 10, 0, 917580, 10, 0, 917581, 10, 0, 983040, 2, 0, 983042, 7, 0, 983045, 7, 0, 983048, 8, 65536, 983050, 1, 65536, 983051, 0, 0, 983052, 1, 0, 983064, 1, 65536, 983065, 1, 0, 983072, 2, 65536, 983073, 10, 0, 983074, 4, 0, 983075, 0, 0, 983076, 4, 65536, 983077, 10, 0, 983078, 10, 0, 983079, 10, 0, 983080, 10, 0, 983081, 10, 0, 983082, 10, 0, 983083, 10, 0, 983084, 2, 0, 983095, 9, 0, 983102, 2, 65536, 983103, 10, 0, 983104, 10, 0, 983105, 10, 0, 983106, 10, 0, 983107, 10, 0, 983108, 10, 0, 983109, 10, 0, 983110, 10, 0, 983111, 10, 0, 983112, 10, 0, 983113, 10, 0, 983114, 10, 0, 983115, 10, 0, 983116, 10, 0, 983117, 10, 0, 1048576, 2, 0, 1048578, 8, 0, 1048581, 8, 0, 1048584, 7, 65536, 1048586, 2, 65536, 1048587, 10, 65536, 1048588, 2, 0, 1048600, 13, 65536, 1048601, 13, 0, 1048604, 9, 0, 1048608, 13, 65536, 1048609, 11, 65536, 1048610, 11, 65536, 1048611, 11, 65536, 1048612, 10, 0, 1048613, 10, 0, 1048614, 10, 0, 1048615, 10, 0, 1048616, 10, 0, 1048617, 10, 0, 1048618, 10, 0, 1048619, 10, 0, 1048620, 4, 0, 1048621, 1, 0, 1048630, 9, 65536, 1048631, 8, 0, 1048638, 2, 65536, 1048639, 10, 0, 1048640, 10, 0, 1048641, 10, 0, 1048642, 10, 0, 1048643, 10, 0, 1048644, 10, 0, 1048645, 10, 0, 1048646, 10, 0, 1048647, 10, 0, 1048648, 10, 0, 1048649, 10, 0, 1048650, 10, 0, 1048651, 10, 0, 1048652, 10, 0, 1048653, 10, 0, 1114112, 4, 0, 1114113, 0, 0, 1114114, 6, 0, 1114115, 0, 0, 1114116, 0, 0, 1114117, 6, 0, 1114118, 1, 0, 1114120, 8, 65536, 1114122, 13, 65536, 1114123, 11, 0, 1114124, 13, 0, 1114128, 1, 65536, 1114129, 5, 0, 1114130, 5, 65536, 1114131, 5, 0, 1114132, 0, 0, 1114133, 1, 0, 1114140, 7, 0, 1114141, 9, 65536, 1114148, 2, 65536, 1114149, 10, 0, 1114150, 10, 0, 1114151, 10, 0, 1114152, 10, 0, 1114153, 10, 0, 1114154, 10, 0, 1114155, 10, 0, 1114156, 10, 0, 1114157, 2, 0, 1114166, 8, 65536, 1114167, 8, 0, 1114174, 2, 65536, 1114175, 10, 0, 1114176, 10, 0, 1114177, 10, 0, 1114178, 10, 0, 1114179, 10, 0, 1114180, 10, 0, 1114181, 10, 0, 1114182, 10, 0, 1114183, 10, 0, 1114184, 10, 0, 1114185, 10, 0, 1114186, 10, 0, 1114187, 10, 0, 1114188, 10, 0, 1179648, 10, 0, 1179649, 10, 0, 1179650, 10, 0, 1179651, 10, 0, 1179652, 10, 0, 1179653, 10, 0, 1179654, 2, 0, 1179656, 7, 65536, 1179664, 2, 65536, 1179665, 10, 0, 1179666, 10, 0, 1179667, 10, 0, 1179668, 10, 0, 1179669, 4, 0, 1179670, 12, 0, 1179675, 9, 0, 1179676, 8, 0, 1179677, 8, 0, 1179684, 2, 65536, 1179685, 10, 0, 1179686, 10, 0, 1179687, 10, 0, 1179688, 10, 0, 1179689, 10, 0, 1179690, 10, 0, 1179691, 10, 0, 1179692, 10, 0, 1179693, 4, 0, 1179694, 1, 0, 1179701, 9, 0, 1179702, 7, 65536, 1179703, 7, 0, 1179710, 2, 65536, 1179711, 10, 0, 1179712, 10, 0, 1179713, 10, 0, 1179714, 10, 0, 1179715, 10, 0, 1179716, 10, 0, 1179717, 10, 0, 1179718, 10, 0, 1179719, 10, 0, 1179720, 10, 0, 1179721, 10, 0, 1179722, 10, 0, 1245184, 10, 0, 1245185, 10, 0, 1245186, 10, 0, 1245187, 10, 0, 1245188, 10, 0, 1245189, 10, 0, 1245190, 2, 0, 1245192, 7, 65536, 1245199, 1, 65536, 1245200, 4, 65536, 1245201, 10, 0, 1245202, 10, 0, 1245203, 10, 0, 1245204, 10, 0, 1245205, 10, 0, 1245207, 1, 0, 1245211, 7, 0, 1245212, 7, 0, 1245213, 8, 65536, 1245220, 2, 65536, 1245221, 10, 0, 1245222, 10, 0, 1245223, 10, 0, 1245224, 10, 0, 1245225, 10, 0, 1245226, 10, 0, 1245227, 10, 0, 1245228, 10, 0, 1245229, 10, 0, 1245230, 2, 0, 1245237, 8, 0, 1245238, 7, 65536, 1245239, 8, 0, 1245240, 9, 65536, 1245246, 2, 65536, 1245247, 10, 0, 1245248, 10, 0, 1245249, 10, 0, 1245250, 10, 0, 1245251, 10, 0, 1245252, 10, 0, 1245253, 10, 0, 1245254, 10, 0, 1245255, 10, 0, 1245256, 10, 0, 1245257, 10, 0, 1245258, 10, 0, 1310720, 10, 0, 1310721, 10, 0, 1310722, 10, 0, 1310723, 10, 0, 1310724, 10, 0, 1310725, 10, 0, 1310726, 2, 0, 1310728, 8, 65536, 1310730, 1, 65536, 1310731, 1, 0, 1310734, 1, 65536, 1310735, 4, 65536, 1310736, 10, 0, 1310737, 10, 0, 1310738, 10, 0, 1310739, 10, 0, 1310740, 10, 0, 1310741, 10, 0, 1310742, 10, 0, 1310743, 4, 0, 1310744, 1, 0, 1310747, 8, 0, 1310748, 7, 0, 1310749, 7, 65536, 1310756, 2, 65536, 1310757, 10, 0, 1310758, 10, 0, 1310759, 10, 0, 1310760, 10, 0, 1310761, 10, 0, 1310762, 10, 0, 1310763, 10, 0, 1310764, 10, 0, 1310765, 10, 0, 1310766, 4, 0, 1310767, 5, 0, 1310768, 12, 0, 1310773, 7, 0, 1310774, 7, 65536, 1310775, 7, 0, 1310776, 7, 65536, 1310782, 2, 65536, 1310783, 10, 0, 1310784, 10, 0, 1310785, 10, 0, 1310786, 10, 0, 1310787, 10, 0, 1310788, 10, 0, 1310789, 10, 0, 1310790, 10, 0, 1310791, 10, 0, 1310792, 10, 0, 1310793, 10, 0, 1376256, 10, 0, 1376257, 10, 0, 1376258, 10, 0, 1376259, 10, 0, 1376260, 10, 0, 1376261, 10, 0, 1376262, 4, 0, 1376263, 0, 0, 1376265, 0, 0, 1376266, 4, 65536, 1376267, 4, 0, 1376268, 0, 0, 1376269, 0, 0, 1376270, 4, 65536, 1376271, 10, 0, 1376272, 10, 0, 1376273, 10, 0, 1376274, 10, 0, 1376275, 10, 0, 1376276, 10, 0, 1376277, 10, 0, 1376278, 10, 0, 1376279, 10, 0, 1376280, 4, 0, 1376281, 12, 0, 1376283, 8, 0, 1376284, 8, 0, 1376285, 8, 65536, 1376287, 12, 65536, 1376288, 0, 0, 1376289, 5, 0, 1376290, 5, 65536, 1376291, 0, 0, 1376292, 4, 65536, 1376293, 10, 0, 1376294, 10, 0, 1376295, 10, 0, 1376296, 10, 0, 1376297, 10, 0, 1376298, 10, 0, 1376299, 10, 0, 1376300, 10, 0, 1376301, 10, 0, 1376302, 10, 0, 1376303, 10, 0, 1376305, 12, 0, 1376309, 7, 0, 1376310, 8, 65536, 1376311, 7, 0, 1376312, 8, 65536, 1376318, 2, 65536, 1376319, 10, 0, 1376320, 10, 0, 1376321, 10, 0, 1376322, 10, 0, 1376323, 10, 0, 1376324, 10, 0, 1376325, 10, 0, 1376326, 10, 0, 1376327, 10, 0, 1376328, 10, 0, 1441792, 10, 0, 1441793, 10, 0, 1441794, 10, 0, 1441795, 10, 0, 1441796, 10, 0, 1441797, 10, 0, 1441798, 10, 0, 1441799, 10, 0, 1441800, 10, 0, 1441801, 10, 0, 1441802, 10, 0, 1441803, 10, 0, 1441804, 10, 0, 1441805, 10, 0, 1441806, 10, 0, 1441807, 10, 0, 1441808, 10, 0, 1441809, 10, 0, 1441810, 10, 0, 1441811, 10, 0, 1441812, 10, 0, 1441813, 10, 0, 1441814, 10, 0, 1441815, 10, 0, 1441816, 10, 0, 1441818, 0, 0, 1441819, 6, 0, 1441820, 6, 0, 1441821, 6, 65536, 1441822, 5, 0, 1441824, 10, 0, 1441825, 10, 0, 1441826, 10, 0, 1441827, 10, 0, 1441828, 10, 0, 1441829, 10, 0, 1441830, 10, 0, 1441831, 10, 0, 1441832, 10, 0, 1441833, 10, 0, 1441834, 10, 0, 1441835, 10, 0, 1441836, 10, 0, 1441837, 10, 0, 1441838, 10, 0, 1441839, 10, 0, 1441840, 10, 0, 1441842, 0, 0, 1441843, 0, 0, 1441844, 0, 0, 1441845, 6, 0, 1441846, 6, 65536, 1441847, 6, 0, 1441848, 6, 65536, 1441849, 0, 0, 1441850, 5, 0, 1441851, 5, 65536, 1441852, 5, 0, 1441853, 0, 0, 1441854, 4, 65536, 1441855, 10, 0, 1441856, 10, 0, 1441857, 10, 0, 1441858, 10, 0, 1441859, 10, 0, 1441860, 10, 0, 1441861, 10, 0, 1441862, 10, 0, 1441863, 10, 0, 1507328, 10, 0, 1507329, 10, 0, 1507330, 10, 0, 1507331, 10, 0, 1507332, 10, 0, 1507333, 10, 0, 1507334, 10, 0, 1507335, 10, 0, 1507336, 10, 0, 1507337, 10, 0, 1507338, 10, 0, 1507339, 10, 0, 1507340, 10, 0, 1507341, 10, 0, 1507342, 10, 0, 1507343, 10, 0, 1507344, 10, 0, 1507345, 10, 0, 1507346, 10, 0, 1507347, 10, 0, 1507348, 10, 0, 1507349, 10, 0, 1507350, 10, 0, 1507351, 10, 0, 1507352, 10, 0, 1507353, 10, 0, 1507354, 10, 0, 1507355, 10, 0, 1507356, 10, 0, 1507357, 10, 0, 1507358, 10, 0, 1507359, 10, 0, 1507360, 10, 0, 1507361, 10, 0, 1507362, 10, 0, 1507363, 10, 0, 1507364, 10, 0, 1507365, 10, 0, 1507366, 10, 0, 1507367, 10, 0, 1507368, 10, 0, 1507369, 10, 0, 1507370, 10, 0, 1507371, 10, 0, 1507372, 10, 0, 1507373, 10, 0, 1507374, 10, 0, 1507375, 10, 0, 1507376, 10, 0, 1507377, 10, 0, 1507378, 10, 0, 1507379, 10, 0, 1507380, 10, 0, 1507381, 10, 0, 1507382, 10, 0, 1507383, 10, 0, 1507384, 10, 0, 1507385, 10, 0, 1507386, 10, 0, 1507387, 10, 0, 1507388, 10, 0, 1507389, 10, 0, 1507390, 10, 0, 1507391, 10, 0, 1507392, 10, 0, 1507393, 10, 0, 1507394, 10, 0, 1507395, 10, 0, 1507396, 10, 0, 1507397, 10, 0, 1507398, 10, 0, 1507399, 10, 0, 1572864, 10, 0, 1572865, 10, 0, 1572866, 10, 0, 1572867, 10, 0, 1572868, 10, 0, 1572869, 10, 0, 1572870, 10, 0, 1572871, 10, 0, 1572872, 10, 0, 1572873, 10, 0, 1572874, 10, 0, 1572875, 10, 0, 1572876, 10, 0, 1572877, 10, 0, 1572878, 10, 0, 1572879, 10, 0, 1572880, 10, 0, 1572881, 10, 0, 1572882, 10, 0, 1572883, 10, 0, 1572884, 10, 0, 1572885, 10, 0, 1572886, 10, 0, 1572887, 10, 0, 1572888, 10, 0, 1572889, 10, 0, 1572890, 10, 0, 1572891, 10, 0, 1572892, 10, 0, 1572893, 10, 0, 1572894, 10, 0, 1572895, 10, 0, 1572896, 10, 0, 1572897, 10, 0, 1572898, 10, 0, 1572899, 10, 0, 1572900, 10, 0, 1572901, 10, 0, 1572902, 10, 0, 1572903, 10, 0, 1572904, 10, 0, 1572905, 10, 0, 1572906, 10, 0, 1572907, 10, 0, 1572908, 10, 0, 1572909, 10, 0, 1572910, 10, 0, 1572911, 10, 0, 1572912, 10, 0, 1572913, 10, 0, 1572914, 10, 0, 1572915, 10, 0, 1572916, 10, 0, 1572917, 10, 0, 1572918, 10, 0, 1572919, 10, 0, 1572920, 10, 0, 1572921, 10, 0, 1572922, 10, 0, 1572923, 10, 0, 1572924, 10, 0, 1572925, 10, 0, 1572926, 10, 0, 1572927, 10, 0, 1572928, 10, 0, 1572929, 10, 0, 1572930, 10, 0, 1572931, 10, 0, 1572932, 10, 0, 1572933, 10, 0, 1572934, 10, 0, 1572935, 10, 0, 1638400, 10, 0, 1638401, 10, 0, 1638402, 10, 0, 1638403, 10, 0, 1638404, 10, 0, 1638405, 10, 0, 1638406, 10, 0, 1638407, 10, 0, 1638408, 10, 0, 1638409, 10, 0, 1638410, 10, 0, 1638411, 10, 0, 1638412, 10, 0, 1638413, 10, 0, 1638414, 10, 0, 1638415, 10, 0, 1638416, 10, 0, 1638417, 10, 0, 1638418, 10, 0, 1638419, 10, 0, 1638420, 10, 0, 1638421, 10, 0, 1638422, 10, 0, 1638423, 10, 0, 1638424, 10, 0, 1638425, 10, 0, 1638426, 10, 0, 1638427, 10, 0, 1638428, 10, 0, 1638429, 10, 0, 1638430, 10, 0, 1638431, 10, 0, 1638432, 10, 0, 1638433, 10, 0, 1638434, 10, 0, 1638435, 10, 0, 1638436, 10, 0, 1638437, 10, 0, 1638438, 10, 0, 1638439, 10, 0, 1638440, 10, 0, 1638441, 10, 0, 1638442, 10, 0, 1638443, 10, 0, 1638444, 10, 0, 1638445, 10, 0, 1638446, 10, 0, 1638447, 10, 0, 1638448, 10, 0, 1638449, 10, 0, 1638450, 10, 0, 1638451, 10, 0, 1638452, 10, 0, 1638453, 10, 0, 1638454, 10, 0, 1638455, 10, 0, 1638456, 10, 0, 1638457, 10, 0, 1638458, 10, 0, 1638459, 10, 0, 1638460, 10, 0, 1638461, 10, 0, 1638462, 10, 0, 1638463, 10, 0, 1638464, 10, 0, 1638465, 10, 0, 1638466, 10, 0, 1638467, 10, 0, 1638468, 10, 0, 1638469, 10, 0, 1638470, 10, 0, 1638471, 10, 0, 1703952, 10, 0, 1703953, 10, 0, 1703954, 10, 0, 1703955, 10, 0, 1703956, 10, 0, 1703957, 10, 0, 1703958, 10, 0, 1703959, 10, 0, 1703960, 10, 0, 1703961, 10, 0, 1703962, 10, 0, 1703963, 10, 0, 1703964, 10, 0, 1703965, 10, 0, 1703966, 10, 0, 1703967, 10, 0, 1703968, 10, 0, 1703969, 10, 0, 1703970, 10, 0, 1703971, 10, 0, 1703972, 10, 0, 1703973, 10, 0, 1703974, 10, 0, 1703975, 10, 0, 1703976, 10, 0, 1703977, 10, 0, 1703978, 10, 0, 1703979, 10, 0, 1703980, 10, 0, 1703981, 10, 0, 1703982, 10, 0, 1703983, 10, 0, 1703984, 10, 0, 1703985, 10, 0, 1703986, 10, 0, 1703987, 10, 0, 1703988, 10, 0, 1703989, 10, 0, 1703990, 10, 0, 1703991, 10, 0, 1703992, 10, 0, 1703993, 10, 0, 1703994, 10, 0, 1703995, 10, 0, 1703996, 10, 0, 1703997, 10, 0, 1703998, 10, 0, 1703999, 10, 0, 1704000, 10, 0, 1704001, 10, 0, 1704002, 10, 0, 1704003, 10, 0, 1704004, 10, 0, 1704005, 10, 0, 1704006, 10, 0, 1704007, 10, 0, 1769488, 10, 0, 1769489, 10, 0, 1769490, 10, 0, 1769491, 10, 0, 1769492, 10, 0, 1769493, 10, 0, 1769494, 10, 0, 1769495, 10, 0, 1769496, 10, 0, 1769497, 10, 0, 1769498, 10, 0, 1769499, 10, 0, 1769500, 10, 0, 1769501, 10, 0, 1769502, 10, 0, 1769503, 10, 0, 1769504, 10, 0, 1769505, 10, 0, 1769506, 10, 0, 1769507, 10, 0, 1769508, 10, 0, 1769509, 10, 0, 1769510, 10, 0, 1769511, 10, 0, 1769512, 10, 0, 1769513, 10, 0, 1769514, 10, 0, 1769515, 10, 0, 1769516, 10, 0, 1769517, 10, 0, 1769518, 10, 0, 1769519, 10, 0, 1769520, 10, 0, 1769521, 10, 0, 1769522, 10, 0, 1769523, 10, 0, 1769524, 10, 0, 1769525, 10, 0, 1769526, 10, 0, 1769527, 10, 0, 1769528, 10, 0, 1769529, 10, 0, 1769530, 10, 0, 1769531, 10, 0, 1769532, 10, 0, 1769533, 10, 0, 1769534, 10, 0, 1769535, 10, 0, 1769536, 10, 0, 1769537, 10, 0, 1769538, 10, 0, 1769539, 10, 0, 1769540, 10, 0, 1769541, 10, 0, 1376264, 6, 65536, 917543, 5, 0, 917544, 4, 65536, 852008, 1, 65536, 852002, 3, 0) + +[node name="Coins" type="Node2D" parent="."] + +[node name="Coin" parent="Coins" instance=ExtResource("2")] +position = Vector2(336, 589.5) + +[node name="Coin2" parent="Coins" instance=ExtResource("2")] +position = Vector2(352, 589.5) + +[node name="Coin3" parent="Coins" instance=ExtResource("2")] +position = Vector2(368, 589.5) + +[node name="Coin4" parent="Coins" instance=ExtResource("2")] +position = Vector2(560, 496) + +[node name="Coin5" parent="Coins" instance=ExtResource("2")] +position = Vector2(576, 496) + +[node name="Coin6" parent="Coins" instance=ExtResource("2")] +position = Vector2(592, 496) + +[node name="Coin7" parent="Coins" instance=ExtResource("2")] +position = Vector2(608, 496) + +[node name="Coin8" parent="Coins" instance=ExtResource("2")] +position = Vector2(624, 496) + +[node name="Coin9" parent="Coins" instance=ExtResource("2")] +position = Vector2(784, 432) + +[node name="Coin10" parent="Coins" instance=ExtResource("2")] +position = Vector2(816, 432) + +[node name="Coin11" parent="Coins" instance=ExtResource("2")] +position = Vector2(912, 384) + +[node name="Coin12" parent="Coins" instance=ExtResource("2")] +position = Vector2(944, 384) + +[node name="Coin13" parent="Coins" instance=ExtResource("2")] +position = Vector2(1040, 336) + +[node name="Coin14" parent="Coins" instance=ExtResource("2")] +position = Vector2(1072, 336) + +[node name="Coin15" parent="Coins" instance=ExtResource("2")] +position = Vector2(896, 624) + +[node name="Coin16" parent="Coins" instance=ExtResource("2")] +position = Vector2(928, 624) + +[node name="Coin17" parent="Coins" instance=ExtResource("2")] +position = Vector2(960, 624) + +[node name="Coin18" parent="Coins" instance=ExtResource("2")] +position = Vector2(960, 592) + +[node name="Coin19" parent="Coins" instance=ExtResource("2")] +position = Vector2(928, 592) + +[node name="Coin20" parent="Coins" instance=ExtResource("2")] +position = Vector2(896, 592) + +[node name="Coin21" parent="Coins" instance=ExtResource("2")] +position = Vector2(49.4434, 244.258) + +[node name="Coin22" parent="Coins" instance=ExtResource("2")] +position = Vector2(44.7994, 240.609) + +[node name="Coin23" parent="Coins" instance=ExtResource("2")] +position = Vector2(54.0875, 240.609) + +[node name="Coin24" parent="Coins" instance=ExtResource("2")] +position = Vector2(58.068, 234.969) + +[node name="Coin25" parent="Coins" instance=ExtResource("2")] +position = Vector2(58.7315, 228.999) + +[node name="Coin26" parent="Coins" instance=ExtResource("2")] +position = Vector2(53.092, 224.686) + +[node name="Coin27" parent="Coins" instance=ExtResource("2")] +position = Vector2(49.1117, 229.331) + +[node name="Coin28" parent="Coins" instance=ExtResource("2")] +position = Vector2(44.136, 224.355) + +[node name="Coin29" parent="Coins" instance=ExtResource("2")] +position = Vector2(39.8238, 228.667) + +[node name="Coin30" parent="Coins" instance=ExtResource("2")] +position = Vector2(41.4823, 234.306) + +[node name="Coin31" parent="Coins" instance=ExtResource("2")] +position = Vector2(1678.71, 232.644) + +[node name="Coin32" parent="Coins" instance=ExtResource("2")] +position = Vector2(1710.71, 232.644) + +[node name="Coin33" parent="Coins" instance=ExtResource("2")] +position = Vector2(1742.71, 232.644) + +[node name="Coin34" parent="Coins" instance=ExtResource("2")] +position = Vector2(1742.71, 200.644) + +[node name="Coin35" parent="Coins" instance=ExtResource("2")] +position = Vector2(1710.71, 200.644) + +[node name="Coin36" parent="Coins" instance=ExtResource("2")] +position = Vector2(1678.71, 200.644) + +[node name="Coin37" parent="Coins" instance=ExtResource("2")] +position = Vector2(2086.38, 302.529) + +[node name="Coin38" parent="Coins" instance=ExtResource("2")] +position = Vector2(2118.38, 302.529) + +[node name="Coin39" parent="Coins" instance=ExtResource("2")] +position = Vector2(2150.38, 302.529) + +[node name="Coin40" parent="Coins" instance=ExtResource("2")] +position = Vector2(2150.38, 270.529) + +[node name="Coin41" parent="Coins" instance=ExtResource("2")] +position = Vector2(2118.38, 270.529) + +[node name="Coin42" parent="Coins" instance=ExtResource("2")] +position = Vector2(2086.38, 270.529) + +[node name="Props" type="Node2D" parent="."] + +[node name="MovingPlatform1" parent="Props" instance=ExtResource("3")] +position = Vector2(725, 439) + +[node name="MovingPlatform2" parent="Props" instance=ExtResource("3")] +position = Vector2(438, 272) + +[node name="MovingPlatform3" parent="Props" instance=ExtResource("3")] +position = Vector2(1554, 369) + +[node name="MovePlatforms" type="AnimationPlayer" parent="Props"] +autoplay = "move" +libraries = { +"": SubResource("AnimationLibrary_el48w") +} + +[node name="Seesaw" parent="Props" instance=ExtResource("4")] +position = Vector2(1201.4, 424.76) + +[node name="OneWayPlatform" parent="Props" instance=ExtResource("5")] +position = Vector2(465, 560.405) + +[node name="Player" parent="." instance=ExtResource("6_fauva")] +position = Vector2(126, 501) + +[node name="Enemies" type="Node2D" parent="."] + +[node name="Enemy1" parent="Enemies" instance=ExtResource("7")] +position = Vector2(417.332, 654.8) +physics_material_override = SubResource("2") + +[node name="Enemy2" parent="Enemies" instance=ExtResource("7")] +position = Vector2(353.832, 612.525) +physics_material_override = SubResource("3") + +[node name="Enemy3" parent="Enemies" instance=ExtResource("7")] +position = Vector2(562.605, 526.53) +physics_material_override = SubResource("4") + +[node name="Enemy4" parent="Enemies" instance=ExtResource("7")] +position = Vector2(646.055, 529.62) +physics_material_override = SubResource("5") + +[node name="Enemy5" parent="Enemies" instance=ExtResource("7")] +position = Vector2(803.69, 461.62) +physics_material_override = SubResource("6") + +[node name="Enemy6" parent="Enemies" instance=ExtResource("7")] +position = Vector2(1325, 391) +physics_material_override = SubResource("7") + +[node name="Enemy7" parent="Enemies" instance=ExtResource("7")] +position = Vector2(728.8, 344.371) +physics_material_override = SubResource("8") + +[node name="Enemy8" parent="Enemies" instance=ExtResource("7")] +position = Vector2(596.815, 230.191) +physics_material_override = SubResource("9") + +[node name="Enemy9" parent="Enemies" instance=ExtResource("7")] +position = Vector2(1714.86, 270.432) +physics_material_override = SubResource("10") + +[node name="Enemy10" parent="Enemies" instance=ExtResource("7")] +position = Vector2(1773.1, 678.095) +physics_material_override = SubResource("11") + +[node name="Enemy11" parent="Enemies" instance=ExtResource("7")] +position = Vector2(1203.31, 407.557) +physics_material_override = SubResource("12") + +[node name="ParallaxBg" parent="." instance=ExtResource("8")] + +[node name="Label" type="Label" parent="."] +offset_left = 12.0 +offset_top = -202.0 +offset_right = 358.0 +offset_bottom = -10.0 +size_flags_horizontal = 2 +size_flags_vertical = 0 +text = "This is a simple demo on how to make a platformer game with Godot. +This version uses physics and the 2D physics engine for motion and collision. +The demo also shows the benefits of using the scene system, where coins, +enemies and the player are edited separatedly and instanced in the stage. + +To edit the base tiles for the tileset, open the tileset_edit.tscn file and follow +instructions." + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +stream = ExtResource("9") +autoplay = true diff --git a/2d/layered_tile_maps/physics_platformer/tiles_demo.png b/2d/layered_tile_maps/physics_platformer/tiles_demo.png new file mode 100644 index 0000000..d0a655f Binary files /dev/null and b/2d/layered_tile_maps/physics_platformer/tiles_demo.png differ diff --git a/2d/layered_tile_maps/physics_platformer/tiles_demo.png.import b/2d/layered_tile_maps/physics_platformer/tiles_demo.png.import new file mode 100644 index 0000000..0aee776 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/tiles_demo.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dbcdt0wqr3gd3" +path="res://.godot/imported/tiles_demo.png-7ca5c7c5c02ab8abe0d585a6a8f086bd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles_demo.png" +dest_files=["res://.godot/imported/tiles_demo.png-7ca5c7c5c02ab8abe0d585a6a8f086bd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/physics_platformer/tileset.tres b/2d/layered_tile_maps/physics_platformer/tileset.tres new file mode 100644 index 0000000..975b426 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/tileset.tres @@ -0,0 +1,798 @@ +[gd_resource type="TileSet" load_steps=18 format=3 uid="uid://rowrak7ls50v"] + +[ext_resource type="Texture2D" uid="uid://dbcdt0wqr3gd3" path="res://tiles_demo.png" id="1"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_va8am"] +texture = ExtResource("1") +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -12, 16, -12, 16, 16, -16, 16) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(16, -12, -16, -12, -16, 16, 16, 16) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 12, 16, 12, 16, -16, -16, -16) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(16, 12, -16, 12, -16, -16, 16, -16) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -12, 16, -12, 16, 16, -16, 16) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(16, -12, -16, -12, -16, 16, 16, 16) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 12, 16, 12, 16, -16, -16, -16) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(16, 12, -16, 12, -16, -16, 16, -16) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_dri2i"] +texture = ExtResource("1") +margins = Vector2i(32, 0) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -12, 12, -12, 12, 16) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, 16, -12, -12, -12, -12, 16) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 12, 12, 12, 12, -16) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 12, -12, 12, -12, -16) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -12, 12, -12, 12, 16) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, 16, -12, -12, -12, -12, 16) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 12, 12, 12, 12, -16) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 12, -12, 12, -12, -16) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_hfgct"] +texture = ExtResource("1") +margins = Vector2i(0, 32) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_7xlxp"] +texture = ExtResource("1") +margins = Vector2i(192, 32) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 16, 16, 16) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, 16, 16, 16, -16, -16, -16) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, -16, 16, -16, -16, 16, -16) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 16, 16, 16) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, 16, 16, 16, -16, -16, -16) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, -16, 16, -16, -16, 16, -16) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_64p8q"] +texture = ExtResource("1") +margins = Vector2i(64, 32) +texture_region_size = Vector2i(32, 96) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -10, 16, 22, 16, 48, -16, 48) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 22, 16, -10, 16, 48, -16, 48) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -48, 16, -48, 16, -22, -16, 10) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -48, 16, -48, 16, 10, -16, -22) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -28, 16, 4, 16, 32, -16, 32) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(16, -28, -16, 4, -16, 32, 16, 32) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 28, 16, -4, 16, -32, -16, -32) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(16, 28, -16, -4, -16, -32, 16, -32) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_bgjgk"] +texture = ExtResource("1") +margins = Vector2i(224, 32) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -16, 12, -16, 12, 16) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, 16, -16, -12, -16, -12, 16) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 12, 16, 12, -16) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 16, -12, 16, -12, -16) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -16, 12, -16, 12, 16) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, 16, -16, -12, -16, -12, 16) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 12, 16, 12, -16) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 16, -12, 16, -12, -16) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_uq55q"] +texture = ExtResource("1") +margins = Vector2i(64, 0) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -12, 16, -12, 16, 12, -16, 12) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(16, -12, -16, -12, -16, 12, 16, 12) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 12, 16, 12, 16, -12, -16, -12) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(16, 12, -16, 12, -16, -12, 16, -12) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -12, 16, -12, 16, 12, -16, 12) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(16, -12, -16, -12, -16, 12, 16, 12) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 12, 16, 12, 16, -12, -16, -12) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(16, 12, -16, 12, -16, -12, 16, -12) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_l5dh6"] +texture = ExtResource("1") +margins = Vector2i(96, 0) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -12, 12, -12, 12, 12, -16, 12) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(16, -12, -12, -12, -12, 12, 16, 12) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 12, 12, 12, 12, -12, -16, -12) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(16, 12, -12, 12, -12, -12, 16, -12) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -12, 12, -12, 12, 12, -16, 12) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(16, -12, -12, -12, -12, 12, 16, 12) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 12, 12, 12, 12, -12, -16, -12) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(16, 12, -12, 12, -12, -12, 16, -12) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_w6c8t"] +texture = ExtResource("1") +margins = Vector2i(32, 32) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -16, 12, -16, 12, 16) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, 16, -16, -12, -16, -12, 16) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 12, 16, 12, -16) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 16, -12, 16, -12, -16) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -16, 12, -16, 12, 16) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, 16, -16, -12, -16, -12, 16) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 12, 16, 12, -16) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 16, -12, 16, -12, -16) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_05nbk"] +texture = ExtResource("1") +margins = Vector2i(160, 64) +texture_region_size = Vector2i(96, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-48, 16, -48, -16, -20, -16, -20, 16) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(48, 16, 48, -16, 20, -16.5, 20, 16) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -16, -32, 16, -4, 16, -4, -16) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(32, -16, 32, 16, 4, 16, 4, -16) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 16, -32, -16, -4, -16, -4, 16) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(32, 16, 32, -16, 4, -16, 4, 16) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -16, -32, 16, -4, 16, -4, -16) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(32, -16, 32, 16, 4, 16, 4, -16) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_ee0gv"] +texture = ExtResource("1") +margins = Vector2i(32, 64) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -16, 12, -16, 16, -12, 16, 16) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, 16, -16, -12, -16, -16, -12, -16, 16) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 12, 16, 16, 12, 16, -16) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 16, -12, 16, -16, 12, -16, -16) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -16, 12, -16, 16, -12, 16, 16) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, 16, -16, -12, -16, -16, -12, -16, 16) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 12, 16, 16, 12, 16, -16) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 16, -12, 16, -16, 12, -16, -16) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_lnu6d"] +texture = ExtResource("1") +margins = Vector2i(96, 96) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -12, 16, -12, 16, 16) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, 16, -12, -16, -12, -16, 16) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 12, 16, 12, 16, -16) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 12, -16, 12, -16, -16) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -12, 16, -12, 16, 16) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, 16, -12, -16, -12, -16, 16) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 12, 16, 12, 16, -16) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 12, -16, 12, -16, -16) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_8javq"] +texture = ExtResource("1") +margins = Vector2i(128, 96) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -12, 16, -12, 16, 16) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, 16, -12, -16, -12, -16, 16) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 12, 16, 12, 16, -16) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 12, -16, 12, -16, -16) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -12, 16, -12, 16, 16) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(16, 16, 16, -12, -16, -12, -16, 16) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 12, 16, 12, 16, -16) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 12, -16, 12, -16, -16) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_8pchj"] +texture = ExtResource("1") +margins = Vector2i(128, 64) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_s315k"] +texture = ExtResource("1") +margins = Vector2i(128, 32) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_cnnsu"] +texture = ExtResource("1") +margins = Vector2i(128, 0) +texture_region_size = Vector2i(32, 32) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 + +[resource] +tile_size = Vector2i(32, 32) +physics_layer_0/collision_layer = 1 +sources/0 = SubResource("TileSetAtlasSource_va8am") +sources/1 = SubResource("TileSetAtlasSource_dri2i") +sources/2 = SubResource("TileSetAtlasSource_w6c8t") +sources/3 = SubResource("TileSetAtlasSource_05nbk") +sources/4 = SubResource("TileSetAtlasSource_ee0gv") +sources/5 = SubResource("TileSetAtlasSource_lnu6d") +sources/6 = SubResource("TileSetAtlasSource_8javq") +sources/7 = SubResource("TileSetAtlasSource_8pchj") +sources/8 = SubResource("TileSetAtlasSource_s315k") +sources/9 = SubResource("TileSetAtlasSource_cnnsu") +sources/10 = SubResource("TileSetAtlasSource_hfgct") +sources/11 = SubResource("TileSetAtlasSource_7xlxp") +sources/12 = SubResource("TileSetAtlasSource_64p8q") +sources/13 = SubResource("TileSetAtlasSource_bgjgk") +sources/14 = SubResource("TileSetAtlasSource_uq55q") +sources/15 = SubResource("TileSetAtlasSource_l5dh6") diff --git a/2d/layered_tile_maps/physics_platformer/tileset_edit.tscn b/2d/layered_tile_maps/physics_platformer/tileset_edit.tscn new file mode 100644 index 0000000..e6dc6b7 --- /dev/null +++ b/2d/layered_tile_maps/physics_platformer/tileset_edit.tscn @@ -0,0 +1,158 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://tiles_demo.png" type="Texture2D" id=1] + +[node name="TilesetEdit" type="Node2D"] + +[node name="Floor" type="Sprite2D" parent="."] +texture = ExtResource( 1 ) +region_rect = Rect2(0, 0, 32, 32) + +[node name="Collision" type="StaticBody2D" parent="Floor"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Floor/Collision"] +polygon = PackedVector2Array(16, -12, 16, 16, -16, 16, -16, -12) + +[node name="Edge" type="Sprite2D" parent="."] +position = Vector2(32, 0) +texture = ExtResource( 1 ) +region_rect = Rect2(32, 0, 32, 32) + +[node name="Collision" type="StaticBody2D" parent="Edge"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Edge/Collision"] +polygon = PackedVector2Array(-16, -12, 12, -12, 12, 16, -16, 16) + +[node name="Wall" type="Sprite2D" parent="."] +position = Vector2(32, 32) +texture = ExtResource( 1 ) +region_rect = Rect2(32, 32, 32, 32) + +[node name="Collision" type="StaticBody2D" parent="Wall"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Wall/Collision"] +polygon = PackedVector2Array(-16, -16, 12, -16, 12, 16, -16, 16) + +[node name="WallDeco" type="Sprite2D" parent="."] +position = Vector2(48, 64) +texture = ExtResource( 1 ) +region_rect = Rect2(160, 64, 64, 32) + +[node name="Collision" type="StaticBody2D" parent="WallDeco"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="WallDeco/Collision"] +polygon = PackedVector2Array(-32, -16, -4, -16, -4, 16, -32, 16) + +[node name="Corner" type="Sprite2D" parent="."] +position = Vector2(32, 96) +texture = ExtResource( 1 ) +region_rect = Rect2(32, 64, 32, 32) + +[node name="Collision" type="StaticBody2D" parent="Corner"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Corner/Collision"] +polygon = PackedVector2Array(-16, -16, 12, -16, 16, -12, 16, 16, -16, 16) + +[node name="Flowers" type="Sprite2D" parent="."] +position = Vector2(64, 96) +texture = ExtResource( 1 ) +region_rect = Rect2(96, 96, 32, 32) + +[node name="Collision" type="StaticBody2D" parent="Flowers"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Flowers/Collision"] +polygon = PackedVector2Array(-16, 16, 16, 16, 16, -12, -16, -12) + +[node name="TreeBase" type="Sprite2D" parent="."] +position = Vector2(96, 96) +texture = ExtResource( 1 ) +region_rect = Rect2(128, 96, 32, 32) + +[node name="Collision" type="StaticBody2D" parent="TreeBase"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="TreeBase/Collision"] +polygon = PackedVector2Array(-16, 16, 16, 16, 16, -12, -16, -12) + +[node name="TreeMid" type="Sprite2D" parent="."] +position = Vector2(96, 64) +texture = ExtResource( 1 ) +region_rect = Rect2(128, 64, 32, 32) + +[node name="TreeMid2" type="Sprite2D" parent="."] +position = Vector2(96, 32) +texture = ExtResource( 1 ) +region_rect = Rect2(128, 32, 32, 32) + +[node name="TreeTop" type="Sprite2D" parent="."] +position = Vector2(96, 0) +texture = ExtResource( 1 ) +region_rect = Rect2(128, 0, 32, 32) + +[node name="Solid" type="Sprite2D" parent="."] +position = Vector2(0, 32) +texture = ExtResource( 1 ) +region_rect = Rect2(0, 32, 32, 32) + +[node name="Ceiling" type="Sprite2D" parent="."] +position = Vector2(0, 64) +texture = ExtResource( 1 ) +region_rect = Rect2(192, 32, 32, 32) + +[node name="Collision" type="StaticBody2D" parent="Ceiling"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Ceiling/Collision"] +polygon = PackedVector2Array(16, -16, 16, 16, -16, 16, -16, -16) + +[node name="Ramp" type="Sprite2D" parent="."] +position = Vector2(128, 112) +texture = ExtResource( 1 ) +region_rect = Rect2(64, 64, 32, 64) + +[node name="Collision" type="StaticBody2D" parent="Ramp"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Ramp/Collision"] +polygon = PackedVector2Array(-16, -28, 16, 4, 16, 32, -16, 32) + +[node name="CeilingWall" type="Sprite2D" parent="."] +position = Vector2(0, 96) +texture = ExtResource( 1 ) +region_rect = Rect2(224, 32, 32, 32) + +[node name="Collision" type="StaticBody2D" parent="CeilingWall"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="CeilingWall/Collision"] +polygon = PackedVector2Array(-16, -16, 12, -16, 12, 16, -16, 16) + +[node name="PlatformFloor" type="Sprite2D" parent="."] +position = Vector2(0, 128) +texture = ExtResource( 1 ) +region_rect = Rect2(64, 0, 32, 32) + +[node name="Collision" type="StaticBody2D" parent="PlatformFloor"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="PlatformFloor/Collision"] +polygon = PackedVector2Array(16, -12, 16, 12, -16, 12, -16, -12) + +[node name="PlatformEdge" type="Sprite2D" parent="."] +position = Vector2(32, 128) +texture = ExtResource( 1 ) +region_rect = Rect2(96, 0, 32, 32) + +[node name="Collision" type="StaticBody2D" parent="PlatformEdge"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="PlatformEdge/Collision"] +polygon = PackedVector2Array(12, -12, 12, 12, -16, 12, -16, -12) + +[node name="Help" type="Label" parent="."] +offset_left = 1.0 +offset_top = 331.0 +offset_right = 727.0 +offset_bottom = 422.0 +size_flags_horizontal = 2 +text = "This scene serves as a tool for editing the tileset. +Nodes (sprites) and their respective collisionsare edited here. + +To create a tileset from this, a \"TileSet\" resoucre must be created. Use the helper in: Scene -> Convert To -> TileSet. +This will save a tileset. Saving over it will merge your changes. + +Finally, the saved tileset resource (tileset.tres in this case), can be opened to be used into a TileMap node for editing a tile map." diff --git a/2d/layered_tile_maps/platformer/README.md b/2d/layered_tile_maps/platformer/README.md new file mode 100644 index 0000000..4bd5b6d --- /dev/null +++ b/2d/layered_tile_maps/platformer/README.md @@ -0,0 +1,45 @@ +# 2D Platformer + +This demo is a pixel art 2D platformer with graphics and sound. + +It shows you how to code characters and physics-based objects +in a real game context. This is a relatively complete demo +where the player can jump, walk on slopes, fire bullets, +interact with enemies, and more. It contains one closed +level, and the player is invincible, unlike the enemies. + +You will find most of the demo’s content in the `level.tscn` scene. +You can open it from the default `game.tscn` scene, or double +click on `level.tscn` in the `src/level/` directory. + +We invite you to open the demo's GDScript files in the editor as +they contain a lot of comments that explain how each class works. + +Language: GDScript + +Renderer: GLES 2 + +Check out this demo on the asset library: https://godotengine.org/asset-library/asset/120 + +## Features + +- Side-scrolling player controller using [`KinematicBody2D`](https://docs.godotengine.org/en/latest/classes/class_kinematicbody2d.html). + - Can walk on and snap to slopes. + - Can shoot, including while jumping. +- Enemies that crawl on the floor and change direction when they encounter an obstacle. +- Camera that stays within the level’s bounds. +- Supports keyboard and gamepad controls. +- Platforms that can move in any direction. +- Gun that shoots bullets with rigid body (natural) physics. +- Collectible coins. +- Pause and pause menu. +- Pixel art visuals. +- Sound effects and music. + +## Screenshots + +![2D Platformer](screenshots/platformer.webp) + +## Music + +[*Pompy*](https://soundcloud.com/madbr/pompy) by Hubert Lamontagne (madbr) diff --git a/2d/layered_tile_maps/platformer/default_bus_layout.tres b/2d/layered_tile_maps/platformer/default_bus_layout.tres new file mode 100644 index 0000000..29e82e6 --- /dev/null +++ b/2d/layered_tile_maps/platformer/default_bus_layout.tres @@ -0,0 +1,4 @@ +[gd_resource type="AudioBusLayout" format=3 uid="uid://cxpxlqmmdcbk2"] + +[resource] +bus/0/volume_db = -11.9576 diff --git a/2d/layered_tile_maps/platformer/enemy/enemy.gd b/2d/layered_tile_maps/platformer/enemy/enemy.gd new file mode 100644 index 0000000..bd4f841 --- /dev/null +++ b/2d/layered_tile_maps/platformer/enemy/enemy.gd @@ -0,0 +1,59 @@ +class_name Enemy extends CharacterBody2D + + +enum State { + WALKING, + DEAD, +} + +const WALK_SPEED = 22.0 + +var _state := State.WALKING + +@onready var gravity: int = ProjectSettings.get("physics/2d/default_gravity") +@onready var platform_detector := $PlatformDetector as RayCast2D +@onready var floor_detector_left := $FloorDetectorLeft as RayCast2D +@onready var floor_detector_right := $FloorDetectorRight as RayCast2D +@onready var sprite := $Sprite2D as Sprite2D +@onready var animation_player := $AnimationPlayer as AnimationPlayer + + +func _physics_process(delta: float) -> void: + if _state == State.WALKING and velocity.is_zero_approx(): + velocity.x = WALK_SPEED + velocity.y += gravity * delta + if not floor_detector_left.is_colliding(): + velocity.x = WALK_SPEED + elif not floor_detector_right.is_colliding(): + velocity.x = -WALK_SPEED + + if is_on_wall(): + velocity.x = -velocity.x + + move_and_slide() + + if velocity.x > 0.0: + sprite.scale.x = 0.8 + elif velocity.x < 0.0: + sprite.scale.x = -0.8 + + var animation := get_new_animation() + if animation != animation_player.current_animation: + animation_player.play(animation) + + +func destroy() -> void: + _state = State.DEAD + velocity = Vector2.ZERO + + +func get_new_animation() -> StringName: + var animation_new: StringName + if _state == State.WALKING: + if velocity.x == 0: + animation_new = &"idle" + else: + animation_new = &"walk" + else: + animation_new = &"destroy" + return animation_new diff --git a/2d/layered_tile_maps/platformer/enemy/enemy.tscn b/2d/layered_tile_maps/platformer/enemy/enemy.tscn new file mode 100644 index 0000000..0b3849b --- /dev/null +++ b/2d/layered_tile_maps/platformer/enemy/enemy.tscn @@ -0,0 +1,309 @@ +[gd_scene load_steps=15 format=3 uid="uid://6mtip3ruyn"] + +[ext_resource type="Texture2D" uid="uid://coj0d33vyyqx1" path="res://player/bullet.webp" id="1"] +[ext_resource type="AudioStream" uid="uid://duwm7i44o75o2" path="res://enemy/explode.wav" id="2"] +[ext_resource type="AudioStream" uid="uid://dm7wsawmylc7b" path="res://enemy/hit.wav" id="3"] +[ext_resource type="Texture2D" uid="uid://bjjywmvba0sve" path="res://enemy/enemy.webp" id="4"] +[ext_resource type="Script" path="res://enemy/enemy.gd" id="5"] + +[sub_resource type="CanvasItemMaterial" id="1"] + +[sub_resource type="Animation" id="8"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Explosion:scale_amount") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [4.0] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:frame") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Explosion:scale_amount_max") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.0] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath(".:collision_layer") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [2] +} + +[sub_resource type="Animation" id="2"] +resource_name = "destroy" +length = 1.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [7] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.8), +"transitions": PackedFloat32Array(0.0796601, 1), +"update": 0, +"values": [0.0, 180.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Sprite2D:self_modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.5, 1.1), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Explosion:emitting") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.6), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [false, true] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Hit:playing") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0.00999999), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Explode:playing") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0.6), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/6/type = "method" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath(".") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(1.5), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"queue_free" +}] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath(".:collision_layer") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("Sprite2D:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0, 0.2, 0.4), +"transitions": PackedFloat32Array(2.2974, 0.183011, 1), +"update": 0, +"values": [Vector2(0, 0), Vector2(0, -32), Vector2(0, 0)] +} +tracks/9/type = "value" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("Explosion:scale_amount_min") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { +"times": PackedFloat32Array(0.6, 1), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [1.0, 4.0] +} +tracks/10/type = "value" +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/path = NodePath("Explosion:scale_amount_max") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/keys = { +"times": PackedFloat32Array(0.6, 1), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [1.0, 4.0] +} + +[sub_resource type="Animation" id="3"] +length = 3.0 +loop_mode = 1 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.333, 0.666, 0.999, 1.332, 1.665, 1.998, 2.331, 2.664, 2.997), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [5, 6, 5, 6, 5, 6, 7, 6, 7, 5] +} + +[sub_resource type="Animation" id="4"] +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.062475, 0.12495, 0.187425, 0.2499, 0.312375, 0.37485, 0.437325, 0.4998, 0.562275, 0.62475, 0.687225, 0.7497, 0.812175, 0.87465, 0.937125), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_0kjfc"] +_data = { +"RESET": SubResource("8"), +"destroy": SubResource("2"), +"idle": SubResource("3"), +"walk": SubResource("4") +} + +[sub_resource type="CapsuleShape2D" id="5"] +radius = 18.0 +height = 50.0 + +[sub_resource type="CanvasItemMaterial" id="6"] +blend_mode = 1 + +[sub_resource type="Gradient" id="7"] +offsets = PackedFloat32Array(0.5, 1) +colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 1) + +[node name="Enemy" type="CharacterBody2D"] +collision_layer = 2 +collision_mask = 24 +script = ExtResource("5") + +[node name="PlatformDetector" type="RayCast2D" parent="."] +position = Vector2(0, 6) +target_position = Vector2(0, 8) +collision_mask = 8 + +[node name="FloorDetectorLeft" type="RayCast2D" parent="."] +position = Vector2(-15, -4) +target_position = Vector2(0, 35) +collision_mask = 24 + +[node name="FloorDetectorRight" type="RayCast2D" parent="."] +position = Vector2(15.5, -3) +target_position = Vector2(0, 35) +collision_mask = 24 + +[node name="Sprite2D" type="Sprite2D" parent="."] +material = SubResource("1") +scale = Vector2(0.8, 0.8) +texture = ExtResource("4") +flip_h = true +hframes = 8 +vframes = 2 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_0kjfc") +} + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +rotation = -1.5708 +shape = SubResource("5") + +[node name="Explosion" type="CPUParticles2D" parent="."] +self_modulate = Color(1, 1, 1, 0.12) +material = SubResource("6") +emitting = false +amount = 32 +lifetime = 0.5 +one_shot = true +speed_scale = 1.2 +explosiveness = 0.7 +draw_order = 215832976 +texture = ExtResource("1") +emission_shape = 1 +emission_sphere_radius = 16.0 +spread = 180.0 +gravity = Vector2(0, -250) +color_ramp = SubResource("7") + +[node name="Hit" type="AudioStreamPlayer2D" parent="."] +stream = ExtResource("3") + +[node name="Explode" type="AudioStreamPlayer2D" parent="."] +stream = ExtResource("2") diff --git a/2d/layered_tile_maps/platformer/enemy/enemy.webp b/2d/layered_tile_maps/platformer/enemy/enemy.webp new file mode 100644 index 0000000..1cfcf6f Binary files /dev/null and b/2d/layered_tile_maps/platformer/enemy/enemy.webp differ diff --git a/2d/layered_tile_maps/platformer/enemy/enemy.webp.import b/2d/layered_tile_maps/platformer/enemy/enemy.webp.import new file mode 100644 index 0000000..a95bf80 --- /dev/null +++ b/2d/layered_tile_maps/platformer/enemy/enemy.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bjjywmvba0sve" +path="res://.godot/imported/enemy.webp-c5e00d5c5f64233c41f70dc392999636.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://enemy/enemy.webp" +dest_files=["res://.godot/imported/enemy.webp-c5e00d5c5f64233c41f70dc392999636.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/enemy/explode.wav b/2d/layered_tile_maps/platformer/enemy/explode.wav new file mode 100644 index 0000000..229c853 Binary files /dev/null and b/2d/layered_tile_maps/platformer/enemy/explode.wav differ diff --git a/2d/layered_tile_maps/platformer/enemy/explode.wav.import b/2d/layered_tile_maps/platformer/enemy/explode.wav.import new file mode 100644 index 0000000..17b7fe5 --- /dev/null +++ b/2d/layered_tile_maps/platformer/enemy/explode.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://duwm7i44o75o2" +path="res://.godot/imported/explode.wav-2389d0cf62710ef336bf397194eae82e.sample" + +[deps] + +source_file="res://enemy/explode.wav" +dest_files=["res://.godot/imported/explode.wav-2389d0cf62710ef336bf397194eae82e.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=true +edit/normalize=true +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/2d/layered_tile_maps/platformer/enemy/hit.wav b/2d/layered_tile_maps/platformer/enemy/hit.wav new file mode 100644 index 0000000..4fb3b13 Binary files /dev/null and b/2d/layered_tile_maps/platformer/enemy/hit.wav differ diff --git a/2d/layered_tile_maps/platformer/enemy/hit.wav.import b/2d/layered_tile_maps/platformer/enemy/hit.wav.import new file mode 100644 index 0000000..f3adf3b --- /dev/null +++ b/2d/layered_tile_maps/platformer/enemy/hit.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://dm7wsawmylc7b" +path="res://.godot/imported/hit.wav-02ea2b331eef4f150ed1e5cb9477122b.sample" + +[deps] + +source_file="res://enemy/hit.wav" +dest_files=["res://.godot/imported/hit.wav-02ea2b331eef4f150ed1e5cb9477122b.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=true +edit/normalize=true +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/2d/layered_tile_maps/platformer/game.gd b/2d/layered_tile_maps/platformer/game.gd new file mode 100644 index 0000000..0ec75a8 --- /dev/null +++ b/2d/layered_tile_maps/platformer/game.gd @@ -0,0 +1,24 @@ +class_name Game extends Node + + +@onready var _pause_menu := $InterfaceLayer/PauseMenu as PauseMenu + + +func _unhandled_input(event: InputEvent) -> void: + if event.is_action_pressed(&"toggle_fullscreen"): + var mode := DisplayServer.window_get_mode() + if mode == DisplayServer.WINDOW_MODE_FULLSCREEN or \ + mode == DisplayServer.WINDOW_MODE_EXCLUSIVE_FULLSCREEN: + DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED) + else: + DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN) + get_tree().root.set_input_as_handled() + + elif event.is_action_pressed(&"toggle_pause"): + var tree := get_tree() + tree.paused = not tree.paused + if tree.paused: + _pause_menu.open() + else: + _pause_menu.close() + get_tree().root.set_input_as_handled() diff --git a/2d/layered_tile_maps/platformer/game_singleplayer.tscn b/2d/layered_tile_maps/platformer/game_singleplayer.tscn new file mode 100644 index 0000000..5205bba --- /dev/null +++ b/2d/layered_tile_maps/platformer/game_singleplayer.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=5 format=3 uid="uid://bf3wnwihk7ymg"] + +[ext_resource type="Script" path="res://game.gd" id="2"] +[ext_resource type="PackedScene" uid="uid://ctgumjaytuoch" path="res://level/level.tscn" id="3"] +[ext_resource type="PackedScene" uid="uid://vh7pmputa7r3" path="res://player/player.tscn" id="4"] +[ext_resource type="PackedScene" uid="uid://c7ai4bigaryci" path="res://gui/pause_menu_singleplayer.tscn" id="4_x6l06"] + +[node name="Game" type="Node"] +process_mode = 3 +script = ExtResource("2") + +[node name="Level" parent="." instance=ExtResource("3")] + +[node name="Player" parent="Level" instance=ExtResource("4")] +position = Vector2(90, 546) + +[node name="InterfaceLayer" type="CanvasLayer" parent="."] +layer = 100 + +[node name="PauseMenu" parent="InterfaceLayer" instance=ExtResource("4_x6l06")] + +[connection signal="coin_collected" from="Level/Player" to="InterfaceLayer/PauseMenu" method="_on_coin_collected"] diff --git a/2d/layered_tile_maps/platformer/game_splitscreen.gd b/2d/layered_tile_maps/platformer/game_splitscreen.gd new file mode 100644 index 0000000..c082666 --- /dev/null +++ b/2d/layered_tile_maps/platformer/game_splitscreen.gd @@ -0,0 +1,10 @@ +extends Game + + +func _ready() -> void: + var player_2 := %Player2 as Player + var viewport_1 := %Viewport1 as SubViewport + var viewport_2 := %Viewport2 as SubViewport + viewport_2.world_2d = viewport_1.world_2d + player_2.camera.custom_viewport = viewport_2 + player_2.camera.make_current() diff --git a/2d/layered_tile_maps/platformer/game_splitscreen.tscn b/2d/layered_tile_maps/platformer/game_splitscreen.tscn new file mode 100644 index 0000000..20a2d95 --- /dev/null +++ b/2d/layered_tile_maps/platformer/game_splitscreen.tscn @@ -0,0 +1,89 @@ +[gd_scene load_steps=8 format=3 uid="uid://2elur2m0il32"] + +[ext_resource type="Script" path="res://game_splitscreen.gd" id="1_60qgt"] +[ext_resource type="PackedScene" uid="uid://dggactv0aho4p" path="res://gui/pause_menu_splitscreen.tscn" id="2_xkexm"] +[ext_resource type="PackedScene" uid="uid://ctgumjaytuoch" path="res://level/level.tscn" id="3_e0nyr"] +[ext_resource type="PackedScene" uid="uid://vh7pmputa7r3" path="res://player/player.tscn" id="4_8j0va"] +[ext_resource type="PackedScene" uid="uid://cw6nldo3rjyyq" path="res://level/background/parallax_background.tscn" id="5_47vt4"] + +[sub_resource type="Gradient" id="Gradient_77njx"] + +[sub_resource type="GradientTexture1D" id="GradientTexture1D_5sxld"] +gradient = SubResource("Gradient_77njx") +width = 2 + +[node name="GameSplitscreen" type="Node"] +process_mode = 3 +script = ExtResource("1_60qgt") + +[node name="Black" type="ColorRect" parent="."] +process_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_right = 6.10352e-05 +offset_bottom = 3.05176e-05 +color = Color(0, 0, 0, 1) + +[node name="SplitContainer" type="HSplitContainer" parent="Black"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 +theme_override_icons/grabber = SubResource("GradientTexture1D_5sxld") +dragger_visibility = 1 + +[node name="ViewportContainer1" type="SubViewportContainer" parent="Black/SplitContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +stretch = true + +[node name="Viewport1" type="SubViewport" parent="Black/SplitContainer/ViewportContainer1"] +unique_name_in_owner = true +handle_input_locally = false +canvas_item_default_texture_filter = 0 +audio_listener_enable_2d = true +size = Vector2i(399, 480) +render_target_update_mode = 4 + +[node name="Level" parent="Black/SplitContainer/ViewportContainer1/Viewport1" instance=ExtResource("3_e0nyr")] + +[node name="Player1" parent="Black/SplitContainer/ViewportContainer1/Viewport1" instance=ExtResource("4_8j0va")] +unique_name_in_owner = true +modulate = Color(1, 1.5, 2.5, 1) +position = Vector2(90, 546) +action_suffix = "_p1" + +[node name="Player2" parent="Black/SplitContainer/ViewportContainer1/Viewport1" instance=ExtResource("4_8j0va")] +unique_name_in_owner = true +modulate = Color(3, 1, 1, 1) +position = Vector2(120, 546) +action_suffix = "_p2" + +[node name="ViewportContainer2" type="SubViewportContainer" parent="Black/SplitContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +stretch = true + +[node name="Viewport2" type="SubViewport" parent="Black/SplitContainer/ViewportContainer2"] +unique_name_in_owner = true +handle_input_locally = false +canvas_item_default_texture_filter = 0 +audio_listener_enable_2d = true +size = Vector2i(399, 480) +render_target_update_mode = 4 + +[node name="ParallaxBackground" parent="Black/SplitContainer/ViewportContainer2/Viewport2" instance=ExtResource("5_47vt4")] + +[node name="InterfaceLayer" type="CanvasLayer" parent="."] +layer = 100 + +[node name="PauseMenu" parent="InterfaceLayer" instance=ExtResource("2_xkexm")] + +[connection signal="coin_collected" from="Black/SplitContainer/ViewportContainer1/Viewport1/Player1" to="InterfaceLayer/PauseMenu" method="_on_coin_collected"] +[connection signal="coin_collected" from="Black/SplitContainer/ViewportContainer1/Viewport1/Player2" to="InterfaceLayer/PauseMenu" method="_on_coin_collected"] diff --git a/2d/layered_tile_maps/platformer/gui/coins_counter.gd b/2d/layered_tile_maps/platformer/gui/coins_counter.gd new file mode 100644 index 0000000..a1ff99a --- /dev/null +++ b/2d/layered_tile_maps/platformer/gui/coins_counter.gd @@ -0,0 +1,16 @@ +class_name CoinsCounter extends Panel + + +var _coins_collected: int = 0 + +@onready var _coins_label := $Label as Label + + +func _ready() -> void: + _coins_label.set_text(str(_coins_collected)) + ($AnimatedSprite2D as AnimatedSprite2D).play() + + +func collect_coin() -> void: + _coins_collected += 1 + _coins_label.set_text(str(_coins_collected)) diff --git a/2d/layered_tile_maps/platformer/gui/coins_counter.tscn b/2d/layered_tile_maps/platformer/gui/coins_counter.tscn new file mode 100644 index 0000000..0f2cce6 --- /dev/null +++ b/2d/layered_tile_maps/platformer/gui/coins_counter.tscn @@ -0,0 +1,127 @@ +[gd_scene load_steps=17 format=3 uid="uid://bsyqg6eh3wl5i"] + +[ext_resource type="Theme" uid="uid://da4noqsij73it" path="res://gui/theme.tres" id="1_mctnl"] +[ext_resource type="Texture2D" uid="uid://cj2absxg54f75" path="res://level/coin.webp" id="2"] +[ext_resource type="Script" path="res://gui/coins_counter.gd" id="3"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_0ik14"] +atlas = ExtResource("2") +region = Rect2(0, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="AtlasTexture_yoomt"] +atlas = ExtResource("2") +region = Rect2(32, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="AtlasTexture_8eq38"] +atlas = ExtResource("2") +region = Rect2(64, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="AtlasTexture_2j420"] +atlas = ExtResource("2") +region = Rect2(96, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="AtlasTexture_5fk3k"] +atlas = ExtResource("2") +region = Rect2(128, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="AtlasTexture_7u8xx"] +atlas = ExtResource("2") +region = Rect2(160, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="AtlasTexture_8cxbx"] +atlas = ExtResource("2") +region = Rect2(192, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="AtlasTexture_0rdkm"] +atlas = ExtResource("2") +region = Rect2(224, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="AtlasTexture_6q04a"] +atlas = ExtResource("2") +region = Rect2(0, 32, 32, 32) + +[sub_resource type="AtlasTexture" id="AtlasTexture_tbg33"] +atlas = ExtResource("2") +region = Rect2(32, 32, 32, 32) + +[sub_resource type="AtlasTexture" id="AtlasTexture_tpmon"] +atlas = ExtResource("2") +region = Rect2(64, 32, 32, 32) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hsrt4"] +atlas = ExtResource("2") +region = Rect2(96, 32, 32, 32) + +[sub_resource type="SpriteFrames" id="6"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_0ik14") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_yoomt") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_8eq38") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_2j420") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_5fk3k") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_7u8xx") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_8cxbx") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_0rdkm") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_6q04a") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_tbg33") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_tpmon") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_hsrt4") +}], +"loop": true, +"name": &"coin_spinning", +"speed": 12.0 +}] + +[node name="CoinsCounter" type="Panel"] +offset_left = 5.0 +offset_top = 5.0 +offset_right = 100.0 +offset_bottom = 45.0 +theme = ExtResource("1_mctnl") +script = ExtResource("3") + +[node name="Label" type="Label" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -1.0 +offset_top = -3.0 +offset_right = -9.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_colors/font_outline_color = Color(0, 0, 0, 1) +theme_override_constants/outline_size = 8 +theme_override_font_sizes/font_size = 32 +text = "99" +horizontal_alignment = 2 +vertical_alignment = 1 + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] +position = Vector2(23.5, 24.5) +sprite_frames = SubResource("6") +animation = &"coin_spinning" diff --git a/2d/layered_tile_maps/platformer/gui/kenney_mini_square.tres b/2d/layered_tile_maps/platformer/gui/kenney_mini_square.tres new file mode 100644 index 0000000..53f8f87 --- /dev/null +++ b/2d/layered_tile_maps/platformer/gui/kenney_mini_square.tres @@ -0,0 +1,5 @@ +[gd_resource type="FontFile" format=2] + +[resource] +antialiased = false +font_path = "res://assets/theme/fonts/kenney_mini_square.ttf" diff --git a/2d/layered_tile_maps/platformer/gui/kenney_mini_square.ttf b/2d/layered_tile_maps/platformer/gui/kenney_mini_square.ttf new file mode 100644 index 0000000..5f2c5bb Binary files /dev/null and b/2d/layered_tile_maps/platformer/gui/kenney_mini_square.ttf differ diff --git a/2d/layered_tile_maps/platformer/gui/kenney_mini_square.ttf.import b/2d/layered_tile_maps/platformer/gui/kenney_mini_square.ttf.import new file mode 100644 index 0000000..77879f1 --- /dev/null +++ b/2d/layered_tile_maps/platformer/gui/kenney_mini_square.ttf.import @@ -0,0 +1,33 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://wqrno8lackrm" +path="res://.godot/imported/kenney_mini_square.ttf-14b0a28a89225c31efd7626f5228f467.fontdata" + +[deps] + +source_file="res://gui/kenney_mini_square.ttf" +dest_files=["res://.godot/imported/kenney_mini_square.ttf-14b0a28a89225c31efd7626f5228f467.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/2d/layered_tile_maps/platformer/gui/pause_menu.gd b/2d/layered_tile_maps/platformer/gui/pause_menu.gd new file mode 100644 index 0000000..4fff558 --- /dev/null +++ b/2d/layered_tile_maps/platformer/gui/pause_menu.gd @@ -0,0 +1,77 @@ +class_name PauseMenu extends Control + + +@export var fade_in_duration := 0.3 +@export var fade_out_duration := 0.2 + +@onready var center_cont := $ColorRect/CenterContainer as CenterContainer +@onready var resume_button := center_cont.get_node(^"VBoxContainer/ResumeButton") as Button +@onready var coins_counter := $ColorRect/CoinsCounter as CoinsCounter + + +func _ready() -> void: + hide() + + +func close() -> void: + var tween := create_tween() + get_tree().paused = false + tween.tween_property( + self, + ^"modulate:a", + 0.0, + fade_out_duration + ).set_trans(Tween.TRANS_LINEAR).set_ease(Tween.EASE_OUT) + tween.parallel().tween_property( + center_cont, + ^"anchor_bottom", + 0.5, + fade_out_duration + ).set_trans(Tween.TRANS_CUBIC).set_ease(Tween.EASE_OUT) + tween.tween_callback(hide) + + +func open() -> void: + show() + resume_button.grab_focus() + + modulate.a = 0.0 + center_cont.anchor_bottom = 0.5 + var tween := create_tween() + tween.tween_property( + self, + ^"modulate:a", + 1.0, + fade_in_duration + ).set_trans(Tween.TRANS_LINEAR).set_ease(Tween.EASE_IN) + tween.parallel().tween_property( + center_cont, + ^"anchor_bottom", + 1.0, + fade_out_duration + ).set_trans(Tween.TRANS_CUBIC).set_ease(Tween.EASE_OUT) + + +func _on_coin_collected() -> void: + coins_counter.collect_coin() + + +func _on_resume_button_pressed() -> void: + close() + + +func _on_singleplayer_button_pressed() -> void: + if visible: + get_tree().paused = false + get_tree().change_scene_to_file("res://game_singleplayer.tscn") + + +func _on_splitscreen_button_pressed() -> void: + if visible: + get_tree().paused = false + get_tree().change_scene_to_file("res://game_splitscreen.tscn") + + +func _on_quit_button_pressed() -> void: + if visible: + get_tree().quit() diff --git a/2d/layered_tile_maps/platformer/gui/pause_menu.tscn b/2d/layered_tile_maps/platformer/gui/pause_menu.tscn new file mode 100644 index 0000000..b77f131 --- /dev/null +++ b/2d/layered_tile_maps/platformer/gui/pause_menu.tscn @@ -0,0 +1,65 @@ +[gd_scene load_steps=4 format=3 uid="uid://dh71g61cm8k44"] + +[ext_resource type="Theme" uid="uid://da4noqsij73it" path="res://gui/theme.tres" id="1"] +[ext_resource type="Script" path="res://gui/pause_menu.gd" id="2"] +[ext_resource type="PackedScene" uid="uid://bsyqg6eh3wl5i" path="res://gui/coins_counter.tscn" id="4"] + +[node name="PauseMenu" type="Control"] +process_mode = 3 +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme = ExtResource("1") +script = ExtResource("2") + +[node name="ColorRect" type="ColorRect" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0, 0, 0, 0.294118) + +[node name="CenterContainer" type="CenterContainer" parent="ColorRect"] +layout_mode = 1 +anchors_preset = -1 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="ColorRect/CenterContainer"] +layout_mode = 2 +alignment = 1 + +[node name="Label" type="Label" parent="ColorRect/CenterContainer/VBoxContainer"] +layout_mode = 2 +text = "Game Paused" +horizontal_alignment = 1 + +[node name="MarginContainer" type="MarginContainer" parent="ColorRect/CenterContainer/VBoxContainer"] +layout_mode = 2 + +[node name="ResumeButton" type="Button" parent="ColorRect/CenterContainer/VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 4 +text = "Resume" + +[node name="QuitButton" type="Button" parent="ColorRect/CenterContainer/VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 4 +text = "Quit" + +[node name="CoinsCounter" parent="ColorRect" instance=ExtResource("4")] +layout_mode = 0 +offset_left = 0.0 +offset_top = 0.0 +offset_right = 105.0 +offset_bottom = 50.0 + +[connection signal="pressed" from="ColorRect/CenterContainer/VBoxContainer/ResumeButton" to="." method="_on_resume_button_pressed"] +[connection signal="pressed" from="ColorRect/CenterContainer/VBoxContainer/QuitButton" to="." method="_on_quit_button_pressed"] diff --git a/2d/layered_tile_maps/platformer/gui/pause_menu_singleplayer.tscn b/2d/layered_tile_maps/platformer/gui/pause_menu_singleplayer.tscn new file mode 100644 index 0000000..8eb0b73 --- /dev/null +++ b/2d/layered_tile_maps/platformer/gui/pause_menu_singleplayer.tscn @@ -0,0 +1,11 @@ +[gd_scene load_steps=2 format=3 uid="uid://c7ai4bigaryci"] + +[ext_resource type="PackedScene" uid="uid://dh71g61cm8k44" path="res://gui/pause_menu.tscn" id="1_pwe1t"] + +[node name="PauseMenu" instance=ExtResource("1_pwe1t")] + +[node name="SplitscreenButton" type="Button" parent="ColorRect/CenterContainer/VBoxContainer" index="3"] +layout_mode = 2 +text = "Change to 2-Player" + +[connection signal="pressed" from="ColorRect/CenterContainer/VBoxContainer/SplitscreenButton" to="." method="_on_splitscreen_button_pressed"] diff --git a/2d/layered_tile_maps/platformer/gui/pause_menu_splitscreen.tscn b/2d/layered_tile_maps/platformer/gui/pause_menu_splitscreen.tscn new file mode 100644 index 0000000..d027bdb --- /dev/null +++ b/2d/layered_tile_maps/platformer/gui/pause_menu_splitscreen.tscn @@ -0,0 +1,11 @@ +[gd_scene load_steps=2 format=3 uid="uid://dggactv0aho4p"] + +[ext_resource type="PackedScene" uid="uid://dh71g61cm8k44" path="res://gui/pause_menu.tscn" id="1_x3hgi"] + +[node name="PauseMenu" instance=ExtResource("1_x3hgi")] + +[node name="SingleplayerButton" type="Button" parent="ColorRect/CenterContainer/VBoxContainer" index="3"] +layout_mode = 2 +text = "Change to 1-player" + +[connection signal="pressed" from="ColorRect/CenterContainer/VBoxContainer/SingleplayerButton" to="." method="_on_singleplayer_button_pressed"] diff --git a/2d/layered_tile_maps/platformer/gui/theme.tres b/2d/layered_tile_maps/platformer/gui/theme.tres new file mode 100644 index 0000000..4bae7a5 --- /dev/null +++ b/2d/layered_tile_maps/platformer/gui/theme.tres @@ -0,0 +1,79 @@ +[gd_resource type="Theme" load_steps=7 format=3 uid="uid://da4noqsij73it"] + +[ext_resource type="FontFile" uid="uid://wqrno8lackrm" path="res://gui/kenney_mini_square.ttf" id="1_f0sjs"] + +[sub_resource type="StyleBoxFlat" id="1"] +content_margin_left = 6.0 +content_margin_top = 4.0 +content_margin_right = 6.0 +content_margin_bottom = 4.0 +bg_color = Color(0.18, 0.207, 0.279, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.14, 0.161, 0.217, 1) + +[sub_resource type="StyleBoxFlat" id="2"] +content_margin_left = 6.0 +content_margin_top = 4.0 +content_margin_right = 6.0 +content_margin_bottom = 4.0 +bg_color = Color(0.15, 0.1725, 0.2325, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.41, 0.61, 0.91, 1) + +[sub_resource type="StyleBoxFlat" id="3"] +content_margin_left = 6.0 +content_margin_top = 4.0 +content_margin_right = 6.0 +content_margin_bottom = 4.0 +bg_color = Color(0.15, 0.1725, 0.2325, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.4, 0.4225, 0.4825, 1) + +[sub_resource type="StyleBoxFlat" id="4"] +content_margin_left = 6.0 +content_margin_top = 4.0 +content_margin_right = 6.0 +content_margin_bottom = 4.0 +bg_color = Color(0.15, 0.1725, 0.2325, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.125, 0.14375, 0.19375, 1) + +[sub_resource type="StyleBoxFlat" id="5"] +content_margin_left = 6.0 +content_margin_top = 4.0 +content_margin_right = 6.0 +content_margin_bottom = 4.0 +bg_color = Color(0.15, 0.1725, 0.2325, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.41, 0.61, 0.91, 1) + +[resource] +default_font = ExtResource("1_f0sjs") +Button/colors/font_color = Color(0.8, 0.8075, 0.8275, 1) +Button/colors/font_color_disabled = Color(1, 1, 1, 0.3) +Button/colors/font_color_hover = Color(0.88, 0.8845, 0.8965, 1) +Button/colors/font_color_pressed = Color(0.411765, 0.611765, 0.909804, 1) +Button/colors/icon_color_hover = Color(1.15, 1.15, 1.15, 1) +Button/colors/icon_color_pressed = Color(0.4715, 0.7015, 1.0465, 1) +Button/constants/hseparation = 2 +Button/fonts/font = ExtResource("1_f0sjs") +Button/styles/disabled = SubResource("1") +Button/styles/focus = SubResource("2") +Button/styles/hover = SubResource("3") +Button/styles/normal = SubResource("4") +Button/styles/pressed = SubResource("5") diff --git a/2d/layered_tile_maps/platformer/gui/touch_button_fire.webp b/2d/layered_tile_maps/platformer/gui/touch_button_fire.webp new file mode 100644 index 0000000..1efbbd8 Binary files /dev/null and b/2d/layered_tile_maps/platformer/gui/touch_button_fire.webp differ diff --git a/2d/layered_tile_maps/platformer/gui/touch_button_fire.webp.import b/2d/layered_tile_maps/platformer/gui/touch_button_fire.webp.import new file mode 100644 index 0000000..e72ff9f --- /dev/null +++ b/2d/layered_tile_maps/platformer/gui/touch_button_fire.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://tgw4f8fu0btj" +path="res://.godot/imported/touch_button_fire.webp-dccf84dcf0f617f42794a4bab6e5b347.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gui/touch_button_fire.webp" +dest_files=["res://.godot/imported/touch_button_fire.webp-dccf84dcf0f617f42794a4bab6e5b347.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/gui/touch_button_jump.webp b/2d/layered_tile_maps/platformer/gui/touch_button_jump.webp new file mode 100644 index 0000000..c943055 Binary files /dev/null and b/2d/layered_tile_maps/platformer/gui/touch_button_jump.webp differ diff --git a/2d/layered_tile_maps/platformer/gui/touch_button_jump.webp.import b/2d/layered_tile_maps/platformer/gui/touch_button_jump.webp.import new file mode 100644 index 0000000..9cf4f9b --- /dev/null +++ b/2d/layered_tile_maps/platformer/gui/touch_button_jump.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c6rum08i3ntoo" +path="res://.godot/imported/touch_button_jump.webp-72d09f543801d684298fbadf893197c2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gui/touch_button_jump.webp" +dest_files=["res://.godot/imported/touch_button_jump.webp-72d09f543801d684298fbadf893197c2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/gui/touch_button_left.webp b/2d/layered_tile_maps/platformer/gui/touch_button_left.webp new file mode 100644 index 0000000..220e289 Binary files /dev/null and b/2d/layered_tile_maps/platformer/gui/touch_button_left.webp differ diff --git a/2d/layered_tile_maps/platformer/gui/touch_button_left.webp.import b/2d/layered_tile_maps/platformer/gui/touch_button_left.webp.import new file mode 100644 index 0000000..ca0acae --- /dev/null +++ b/2d/layered_tile_maps/platformer/gui/touch_button_left.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://8g15fmgwiffk" +path="res://.godot/imported/touch_button_left.webp-f44154539d59fd4f5b3597e8703bbc6a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gui/touch_button_left.webp" +dest_files=["res://.godot/imported/touch_button_left.webp-f44154539d59fd4f5b3597e8703bbc6a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/gui/touch_button_right.webp b/2d/layered_tile_maps/platformer/gui/touch_button_right.webp new file mode 100644 index 0000000..2b71f3f Binary files /dev/null and b/2d/layered_tile_maps/platformer/gui/touch_button_right.webp differ diff --git a/2d/layered_tile_maps/platformer/gui/touch_button_right.webp.import b/2d/layered_tile_maps/platformer/gui/touch_button_right.webp.import new file mode 100644 index 0000000..c8004f7 --- /dev/null +++ b/2d/layered_tile_maps/platformer/gui/touch_button_right.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d3frwb2tyw2r7" +path="res://.godot/imported/touch_button_right.webp-ec9f97ce35fcf0bf570ff19f4fcaecc8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gui/touch_button_right.webp" +dest_files=["res://.godot/imported/touch_button_right.webp-ec9f97ce35fcf0bf570ff19f4fcaecc8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/icon.webp b/2d/layered_tile_maps/platformer/icon.webp new file mode 100644 index 0000000..58f210c Binary files /dev/null and b/2d/layered_tile_maps/platformer/icon.webp differ diff --git a/2d/layered_tile_maps/platformer/icon.webp.import b/2d/layered_tile_maps/platformer/icon.webp.import new file mode 100644 index 0000000..d230cd3 --- /dev/null +++ b/2d/layered_tile_maps/platformer/icon.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bi5cse7d4spxa" +path="res://.godot/imported/icon.webp-e94f9a68b0f625a567a797079e4d325f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.webp" +dest_files=["res://.godot/imported/icon.webp-e94f9a68b0f625a567a797079e4d325f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/level/background/cloud_1.webp b/2d/layered_tile_maps/platformer/level/background/cloud_1.webp new file mode 100644 index 0000000..4182495 Binary files /dev/null and b/2d/layered_tile_maps/platformer/level/background/cloud_1.webp differ diff --git a/2d/layered_tile_maps/platformer/level/background/cloud_1.webp.import b/2d/layered_tile_maps/platformer/level/background/cloud_1.webp.import new file mode 100644 index 0000000..e235627 --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/background/cloud_1.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://t8otskslwopy" +path="res://.godot/imported/cloud_1.webp-c65f6a46c6e6e73306ba4ed0326c749e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/background/cloud_1.webp" +dest_files=["res://.godot/imported/cloud_1.webp-c65f6a46c6e6e73306ba4ed0326c749e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/level/background/cloud_2.webp b/2d/layered_tile_maps/platformer/level/background/cloud_2.webp new file mode 100644 index 0000000..c6651c9 Binary files /dev/null and b/2d/layered_tile_maps/platformer/level/background/cloud_2.webp differ diff --git a/2d/layered_tile_maps/platformer/level/background/cloud_2.webp.import b/2d/layered_tile_maps/platformer/level/background/cloud_2.webp.import new file mode 100644 index 0000000..4825e1c --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/background/cloud_2.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dud80ds6rq6vr" +path="res://.godot/imported/cloud_2.webp-32c8608178e58b5f5de05f3d51d6cca6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/background/cloud_2.webp" +dest_files=["res://.godot/imported/cloud_2.webp-32c8608178e58b5f5de05f3d51d6cca6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/level/background/cloud_3.webp b/2d/layered_tile_maps/platformer/level/background/cloud_3.webp new file mode 100644 index 0000000..d4118a3 Binary files /dev/null and b/2d/layered_tile_maps/platformer/level/background/cloud_3.webp differ diff --git a/2d/layered_tile_maps/platformer/level/background/cloud_3.webp.import b/2d/layered_tile_maps/platformer/level/background/cloud_3.webp.import new file mode 100644 index 0000000..3d208de --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/background/cloud_3.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://twy8cs78gqbv" +path="res://.godot/imported/cloud_3.webp-b6b85fc4dad9fe6169463a7352ceaa46.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/background/cloud_3.webp" +dest_files=["res://.godot/imported/cloud_3.webp-b6b85fc4dad9fe6169463a7352ceaa46.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/level/background/distant_platforms_1.webp b/2d/layered_tile_maps/platformer/level/background/distant_platforms_1.webp new file mode 100644 index 0000000..35f02ca Binary files /dev/null and b/2d/layered_tile_maps/platformer/level/background/distant_platforms_1.webp differ diff --git a/2d/layered_tile_maps/platformer/level/background/distant_platforms_1.webp.import b/2d/layered_tile_maps/platformer/level/background/distant_platforms_1.webp.import new file mode 100644 index 0000000..c793ef3 --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/background/distant_platforms_1.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://eeitd2vus25o" +path="res://.godot/imported/distant_platforms_1.webp-dd0c47297581991d9270b74920caa0de.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/background/distant_platforms_1.webp" +dest_files=["res://.godot/imported/distant_platforms_1.webp-dd0c47297581991d9270b74920caa0de.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/level/background/distant_platforms_2.webp b/2d/layered_tile_maps/platformer/level/background/distant_platforms_2.webp new file mode 100644 index 0000000..0bb0b59 Binary files /dev/null and b/2d/layered_tile_maps/platformer/level/background/distant_platforms_2.webp differ diff --git a/2d/layered_tile_maps/platformer/level/background/distant_platforms_2.webp.import b/2d/layered_tile_maps/platformer/level/background/distant_platforms_2.webp.import new file mode 100644 index 0000000..ae70919 --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/background/distant_platforms_2.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cvknem5bj24sc" +path="res://.godot/imported/distant_platforms_2.webp-c94d775a28abafa5c8dffb39f952d140.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/background/distant_platforms_2.webp" +dest_files=["res://.godot/imported/distant_platforms_2.webp-c94d775a28abafa5c8dffb39f952d140.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/level/background/parallax_background.tscn b/2d/layered_tile_maps/platformer/level/background/parallax_background.tscn new file mode 100644 index 0000000..aa8dafb --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/background/parallax_background.tscn @@ -0,0 +1,156 @@ +[gd_scene load_steps=7 format=3 uid="uid://cw6nldo3rjyyq"] + +[ext_resource type="Texture2D" uid="uid://cvknem5bj24sc" path="res://level/background/distant_platforms_2.webp" id="1"] +[ext_resource type="Texture2D" uid="uid://osu4k0jdk3wa" path="res://level/background/sky.webp" id="2"] +[ext_resource type="Texture2D" uid="uid://twy8cs78gqbv" path="res://level/background/cloud_3.webp" id="3"] +[ext_resource type="Texture2D" uid="uid://dud80ds6rq6vr" path="res://level/background/cloud_2.webp" id="5"] +[ext_resource type="Texture2D" uid="uid://eeitd2vus25o" path="res://level/background/distant_platforms_1.webp" id="6"] +[ext_resource type="Texture2D" uid="uid://t8otskslwopy" path="res://level/background/cloud_1.webp" id="7"] + +[node name="ParallaxBackground" type="ParallaxBackground"] +scroll_base_scale = Vector2(0.1, 0) + +[node name="Sky" type="ParallaxLayer" parent="."] +motion_scale = Vector2(0.2, 1) + +[node name="Sprite2D" type="Sprite2D" parent="Sky"] +position = Vector2(-809, 58) +scale = Vector2(1.2, 1.2) +texture = ExtResource("2") +centered = false + +[node name="Sprite2" type="Sprite2D" parent="Sky"] +position = Vector2(-809, 0) +scale = Vector2(1.2, 1.2) +texture = ExtResource("2") +centered = false + +[node name="Clouds" type="ParallaxLayer" parent="."] +motion_scale = Vector2(0.1, 1) +motion_offset = Vector2(-550, 0) + +[node name="CloudGroup1" type="Node2D" parent="Clouds"] +position = Vector2(-780, 0) + +[node name="Sprite2" type="Sprite2D" parent="Clouds/CloudGroup1"] +position = Vector2(470, 4) +texture = ExtResource("5") +centered = false + +[node name="Sprite3" type="Sprite2D" parent="Clouds/CloudGroup1"] +position = Vector2(726, 91) +texture = ExtResource("3") +centered = false + +[node name="Sprite4" type="Sprite2D" parent="Clouds/CloudGroup1"] +position = Vector2(1133, 113) +texture = ExtResource("3") +centered = false + +[node name="Sprite5" type="Sprite2D" parent="Clouds/CloudGroup1"] +position = Vector2(1513, 165) +texture = ExtResource("3") +centered = false + +[node name="Sprite6" type="Sprite2D" parent="Clouds/CloudGroup1"] +position = Vector2(396, 109) +texture = ExtResource("7") +centered = false + +[node name="CloudGroup2" type="Node2D" parent="Clouds"] + +[node name="Sprite1" type="Sprite2D" parent="Clouds/CloudGroup2"] +position = Vector2(-135, 213) +texture = ExtResource("5") +centered = false + +[node name="Sprite5" type="Sprite2D" parent="Clouds/CloudGroup2"] +position = Vector2(19, 77) +scale = Vector2(0.5, 0.5) +texture = ExtResource("7") +centered = false + +[node name="Sprite7" type="Sprite2D" parent="Clouds/CloudGroup2"] +position = Vector2(140, 261) +scale = Vector2(0.5, 0.5) +texture = ExtResource("3") +centered = false + +[node name="CloudGroup3" type="Node2D" parent="Clouds"] +position = Vector2(390, 0) + +[node name="Sprite1" type="Sprite2D" parent="Clouds/CloudGroup3"] +position = Vector2(1034, -60) +texture = ExtResource("5") +centered = false + +[node name="Sprite7" type="Sprite2D" parent="Clouds/CloudGroup3"] +position = Vector2(491, 251) +texture = ExtResource("5") +centered = false + +[node name="Sprite2" type="Sprite2D" parent="Clouds/CloudGroup3"] +position = Vector2(545, 108) +texture = ExtResource("5") +centered = false + +[node name="Sprite3" type="Sprite2D" parent="Clouds/CloudGroup3"] +position = Vector2(-164, 212) +texture = ExtResource("7") +centered = false + +[node name="Sprite8" type="Sprite2D" parent="Clouds/CloudGroup3"] +position = Vector2(287, 220) +scale = Vector2(0.5, 0.5) +texture = ExtResource("7") +centered = false + +[node name="CloudGroup4" type="Node2D" parent="Clouds"] +position = Vector2(780, 0) + +[node name="Sprite1" type="Sprite2D" parent="Clouds/CloudGroup4"] +position = Vector2(-293, 64) +texture = ExtResource("5") +centered = false + +[node name="Sprite2" type="Sprite2D" parent="Clouds/CloudGroup4"] +position = Vector2(-229, 199) +texture = ExtResource("5") +centered = false + +[node name="Sprite5" type="Sprite2D" parent="Clouds/CloudGroup4"] +position = Vector2(83, 115) +texture = ExtResource("7") +centered = false + +[node name="Sprite7" type="Sprite2D" parent="Clouds/CloudGroup4"] +position = Vector2(7, 177) +texture = ExtResource("7") +centered = false + +[node name="Sprite6" type="Sprite2D" parent="Clouds/CloudGroup4"] +position = Vector2(226, 14) +scale = Vector2(0.5, 0.5) +texture = ExtResource("7") +centered = false + +[node name="Mountains2" type="ParallaxLayer" parent="."] +position = Vector2(0, 243) +motion_scale = Vector2(0.2, 1) + +[node name="Sprite2D" type="Sprite2D" parent="Mountains2"] +position = Vector2(567, 301.2) +texture = ExtResource("1") +region_enabled = true +region_rect = Rect2(0, 0, 2048, 251.104) + +[node name="Mountains1" type="ParallaxLayer" parent="."] +position = Vector2(0, 246) +motion_scale = Vector2(0.4, 1) + +[node name="Sprite2D" type="Sprite2D" parent="Mountains1"] +position = Vector2(437, 278.2) +scale = Vector2(1.2, 1.2) +texture = ExtResource("6") +region_enabled = true +region_rect = Rect2(0, 0, 2048, 251.104) diff --git a/2d/layered_tile_maps/platformer/level/background/sky.webp b/2d/layered_tile_maps/platformer/level/background/sky.webp new file mode 100644 index 0000000..8a1fc8e Binary files /dev/null and b/2d/layered_tile_maps/platformer/level/background/sky.webp differ diff --git a/2d/layered_tile_maps/platformer/level/background/sky.webp.import b/2d/layered_tile_maps/platformer/level/background/sky.webp.import new file mode 100644 index 0000000..1a55781 --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/background/sky.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://osu4k0jdk3wa" +path="res://.godot/imported/sky.webp-eab5274085f2398ffa09838fc9108cee.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/background/sky.webp" +dest_files=["res://.godot/imported/sky.webp-eab5274085f2398ffa09838fc9108cee.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/level/coin.gd b/2d/layered_tile_maps/platformer/level/coin.gd new file mode 100644 index 0000000..152cfb1 --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/coin.gd @@ -0,0 +1,10 @@ +class_name Coin extends Area2D +## Collectible that disappears when the player touches it. + + +@onready var animation_player := $AnimationPlayer as AnimationPlayer + + +func _on_body_entered(body: Node2D) -> void: + animation_player.play(&"picked") + (body as Player).coin_collected.emit() diff --git a/2d/layered_tile_maps/platformer/level/coin.tscn b/2d/layered_tile_maps/platformer/level/coin.tscn new file mode 100644 index 0000000..0cea147 --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/coin.tscn @@ -0,0 +1,188 @@ +[gd_scene load_steps=9 format=3 uid="uid://c3dh7xb6ef76q"] + +[ext_resource type="Texture2D" uid="uid://cj2absxg54f75" path="res://level/coin.webp" id="1"] +[ext_resource type="AudioStream" uid="uid://w4j7xs5uhoer" path="res://player/coin_pickup.wav" id="3"] +[ext_resource type="Script" path="res://level/coin.gd" id="4"] + +[sub_resource type="Animation" id="Animation_4kkvr"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:monitoring") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [true] +} + +[sub_resource type="Animation" id="1"] +resource_name = "picked" +length = 1.5 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 1.25), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0, 11] +} +tracks/1/type = "method" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(1), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"queue_free" +}] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Sprite2D:self_modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath(".:monitoring") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [false] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Sprite2D:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 1.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(0, 0), Vector2(0, -42)] +} +tracks/5/type = "audio" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Pickup") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"clips": [{ +"end_offset": 0.0, +"start_offset": 0.0, +"stream": ExtResource("3") +}], +"times": PackedFloat32Array(0) +} +tracks/5/use_blend = true + +[sub_resource type="Animation" id="2"] +loop_mode = 1 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.16675, 0.3335, 0.50025, 0.667, 0.83375, 1.0005), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 2, 1, 0] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 2, +"values": [Vector2(0, 0)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Sprite2D:self_modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 2, +"values": [Color(1, 1, 1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath(".:monitoring") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 2, +"values": [true] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_i7oeb"] +_data = { +"RESET": SubResource("Animation_4kkvr"), +"picked": SubResource("1"), +"spinning": SubResource("2") +} + +[sub_resource type="CircleShape2D" id="3"] +radius = 10.0499 + +[node name="Coin" type="Area2D"] +collision_layer = 0 +monitorable = false +script = ExtResource("4") + +[node name="Sprite2D" type="Sprite2D" parent="."] +scale = Vector2(0.65, 0.65) +texture = ExtResource("1") +hframes = 8 +vframes = 2 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_i7oeb") +} +autoplay = "spinning" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("3") + +[node name="Pickup" type="AudioStreamPlayer2D" parent="."] + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/2d/layered_tile_maps/platformer/level/coin.webp b/2d/layered_tile_maps/platformer/level/coin.webp new file mode 100644 index 0000000..3f4cd97 Binary files /dev/null and b/2d/layered_tile_maps/platformer/level/coin.webp differ diff --git a/2d/layered_tile_maps/platformer/level/coin.webp.import b/2d/layered_tile_maps/platformer/level/coin.webp.import new file mode 100644 index 0000000..89db6da --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/coin.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cj2absxg54f75" +path="res://.godot/imported/coin.webp-1d50c095672512acb2df6e9dbf7e85c6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/coin.webp" +dest_files=["res://.godot/imported/coin.webp-1d50c095672512acb2df6e9dbf7e85c6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/level/level.gd b/2d/layered_tile_maps/platformer/level/level.gd new file mode 100644 index 0000000..a30fd92 --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/level.gd @@ -0,0 +1,17 @@ +extends Node2D + + +const LIMIT_LEFT = -315 +const LIMIT_TOP = -250 +const LIMIT_RIGHT = 955 +const LIMIT_BOTTOM = 690 + + +func _ready(): + for child in get_children(): + if child is Player: + var camera = child.get_node("Camera") + camera.limit_left = LIMIT_LEFT + camera.limit_top = LIMIT_TOP + camera.limit_right = LIMIT_RIGHT + camera.limit_bottom = LIMIT_BOTTOM diff --git a/2d/layered_tile_maps/platformer/level/level.tscn b/2d/layered_tile_maps/platformer/level/level.tscn new file mode 100644 index 0000000..bd87613 --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/level.tscn @@ -0,0 +1,1727 @@ +[gd_scene load_steps=24 format=3 uid="uid://ctgumjaytuoch"] + +[ext_resource type="TileSet" uid="uid://08mkofgbxx70" path="res://level/tileset.tres" id="1"] +[ext_resource type="PackedScene" uid="uid://6mtip3ruyn" path="res://enemy/enemy.tscn" id="2"] +[ext_resource type="PackedScene" uid="uid://cky6e5nl0nyod" path="res://level/platforms/platform.tscn" id="3"] +[ext_resource type="PackedScene" uid="uid://c3dh7xb6ef76q" path="res://level/coin.tscn" id="4"] +[ext_resource type="Texture2D" uid="uid://bxsmiv7k3fngt" path="res://level/platforms/moving_platform.webp" id="6"] +[ext_resource type="PackedScene" uid="uid://cw6nldo3rjyyq" path="res://level/background/parallax_background.tscn" id="7"] +[ext_resource type="Texture2D" uid="uid://bj6am5nfc0k73" path="res://level/props/grass_1.webp" id="10"] +[ext_resource type="Texture2D" uid="uid://ddmq5iwm2qd1j" path="res://level/props/flower_1.webp" id="11"] +[ext_resource type="Texture2D" uid="uid://bju7r7jqn8bqy" path="res://level/props/grass_2.webp" id="12"] +[ext_resource type="Texture2D" uid="uid://upfcr5xg5fvh" path="res://level/props/grass_3.webp" id="13"] +[ext_resource type="Texture2D" uid="uid://icddaryasunc" path="res://level/props/tree_1.webp" id="14"] +[ext_resource type="Texture2D" uid="uid://dea1a76o6b0ix" path="res://level/props/tree_2.webp" id="15"] +[ext_resource type="Texture2D" uid="uid://cqydct6vajobg" path="res://level/props/bush_1.webp" id="16"] +[ext_resource type="Texture2D" uid="uid://co8bwstg3ea6x" path="res://level/props/rock_1.webp" id="17"] +[ext_resource type="Material" uid="uid://djwm5nol3d801" path="res://level/props/wind_sway.tres" id="18"] +[ext_resource type="Texture2D" uid="uid://c5xpotfxdi0ms" path="res://level/props/fern_1.webp" id="19"] +[ext_resource type="Texture2D" uid="uid://crfy1osk1c1gc" path="res://level/props/ground_flowers_1.webp" id="20"] +[ext_resource type="Texture2D" uid="uid://bvu4vgnc84r84" path="res://level/props/vine_1.webp" id="21"] +[ext_resource type="Texture2D" uid="uid://bu54lwrkcng25" path="res://level/props/vine_2.webp" id="22"] + +[sub_resource type="Animation" id="1"] +resource_name = "move" +length = 4.0 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.001, 2, 4), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [Vector2(707, 400), Vector2(800, 410), Vector2(800, 200), Vector2(800, 410)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_knmjc"] +_data = { +"move": SubResource("1") +} + +[sub_resource type="Animation" id="2"] +length = 8.0 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 4, 8), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(-28, 645), Vector2(-28, 350), Vector2(-28, 645)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_frb4n"] +_data = { +"move": SubResource("2") +} + +[node name="Level" type="Node2D"] +process_mode = 1 + +[node name="TileMap" type="TileMap" parent="."] +z_index = 1 +tile_set = ExtResource("1") +rendering_quadrant_size = 32 +format = 2 +layer_0/tile_data = PackedInt32Array(65524, 7, 65536, 65525, 0, 0, 65526, 0, 0, 65527, 0, 0, 65528, 0, 0, 65529, 0, 0, 65530, 0, 0, 65531, 0, 0, 65532, 2, 0, 14, 2, 65536, 15, 0, 65536, 16, 0, 0, 17, 0, 0, 18, 0, 0, 19, 0, 0, 20, 0, 0, 21, 0, 0, 22, 7, 0, 131060, 7, 65536, 131061, 6, 0, 131062, 6, 0, 131063, 6, 0, 131064, 6, 0, 131065, 6, 0, 131066, 6, 0, 131067, 6, 0, 131068, 7, 0, 65538, 4, 65536, 65539, 3, 0, 65540, 3, 0, 65541, 3, 65536, 65542, 4, 0, 65550, 7, 65536, 65551, 6, 65536, 65552, 6, 0, 65553, 6, 0, 65554, 6, 0, 65555, 6, 0, 65556, 6, 0, 65557, 6, 0, 65558, 7, 0, 196596, 7, 65536, 196597, 6, 0, 196598, 6, 0, 196599, 6, 0, 196600, 6, 0, 196601, 6, 0, 196602, 6, 0, 196603, 6, 0, 196604, 7, 0, 196607, 4, 65536, 131072, 4, 0, 131086, 7, 65536, 131087, 6, 65536, 131088, 6, 0, 131089, 6, 0, 131090, 6, 0, 131091, 6, 0, 131092, 6, 0, 131093, 6, 0, 131094, 7, 0, 262132, 7, 65536, 262133, 6, 0, 262134, 6, 0, 262135, 6, 0, 262136, 6, 0, 262137, 6, 0, 262138, 6, 0, 262139, 6, 0, 262140, 7, 0, 196614, 4, 65536, 196615, 3, 65536, 196616, 4, 0, 196622, 7, 65536, 196623, 6, 65536, 196624, 6, 0, 196625, 6, 0, 196626, 6, 0, 196627, 6, 0, 196628, 6, 0, 196629, 6, 0, 196630, 7, 0, 327668, 7, 65536, 327669, 6, 0, 327670, 6, 0, 327671, 6, 0, 327672, 6, 0, 327673, 6, 0, 327674, 6, 0, 327675, 6, 0, 327676, 8, 0, 327677, 2, 0, 262158, 7, 65536, 262159, 6, 65536, 262160, 6, 0, 262161, 6, 0, 262162, 6, 0, 262163, 6, 0, 262164, 6, 0, 262165, 6, 0, 262166, 7, 0, 393204, 7, 65536, 393205, 6, 0, 393206, 6, 0, 393207, 6, 0, 393208, 6, 0, 393209, 6, 0, 393210, 6, 0, 393211, 6, 0, 393212, 6, 0, 393213, 7, 0, 327681, 4, 65536, 327682, 3, 0, 327683, 4, 0, 327694, 7, 65536, 327695, 6, 65536, 327696, 6, 0, 327697, 6, 0, 327698, 6, 0, 327699, 6, 0, 327700, 6, 0, 327701, 6, 0, 327702, 7, 0, 458740, 7, 65536, 458741, 6, 0, 458742, 6, 0, 458743, 6, 0, 458744, 6, 0, 458745, 6, 0, 458746, 6, 0, 458747, 6, 0, 458748, 18, 65536, 458749, 7, 0, 393222, 2, 65536, 393223, 11, 0, 393224, 13, 0, 393225, 11, 0, 393226, 2, 0, 393230, 7, 65536, 393231, 6, 65536, 393232, 6, 0, 393233, 6, 0, 393234, 6, 0, 393235, 6, 0, 393236, 6, 0, 393237, 6, 0, 393238, 7, 0, 524276, 7, 65536, 524277, 6, 0, 524278, 6, 0, 524279, 6, 0, 524280, 6, 0, 524281, 6, 0, 524282, 6, 0, 524283, 6, 0, 524284, 6, 0, 524285, 7, 0, 458753, 4, 65536, 458754, 3, 65536, 458755, 3, 65536, 458756, 4, 0, 458758, 16, 65536, 458759, 15, 65536, 458760, 14, 0, 458761, 14, 0, 458762, 16, 0, 458766, 7, 65536, 458767, 6, 65536, 458768, 6, 0, 458769, 6, 0, 458770, 6, 0, 458771, 6, 0, 458772, 6, 0, 458773, 6, 0, 458774, 7, 0, 589812, 7, 65536, 589813, 6, 0, 589814, 6, 0, 589815, 6, 0, 589816, 6, 0, 589817, 6, 0, 589818, 6, 0, 589819, 6, 0, 589820, 6, 0, 589821, 7, 0, 524302, 7, 65536, 524303, 6, 65536, 524304, 6, 0, 524305, 6, 0, 524306, 6, 0, 524307, 6, 0, 524308, 6, 0, 524309, 6, 0, 524310, 7, 0, 655348, 7, 65536, 655349, 6, 0, 655350, 6, 0, 655351, 6, 0, 655352, 6, 0, 655353, 6, 0, 655354, 6, 0, 655355, 6, 0, 655356, 18, 65536, 655357, 7, 0, 589837, 9, 65536, 589838, 8, 65536, 589839, 6, 65536, 589840, 6, 0, 589841, 6, 0, 589842, 6, 0, 589843, 6, 0, 589844, 6, 0, 589845, 6, 0, 589846, 7, 0, 720884, 7, 65536, 720885, 6, 0, 720886, 6, 0, 720887, 6, 0, 720888, 6, 0, 720889, 6, 0, 720890, 6, 0, 720891, 6, 0, 720892, 6, 0, 720893, 8, 0, 720894, 13, 0, 720895, 11, 0, 655360, 11, 0, 655361, 13, 0, 655362, 13, 0, 655363, 11, 0, 655364, 11, 0, 655365, 13, 0, 655366, 11, 0, 655367, 13, 0, 655368, 11, 0, 655369, 13, 0, 655370, 11, 0, 655371, 11, 0, 655372, 13, 0, 655373, 10, 65536, 655374, 6, 65536, 655375, 6, 65536, 655376, 6, 0, 655377, 6, 0, 655378, 6, 0, 655379, 6, 0, 655380, 6, 0, 655381, 6, 0, 655382, 7, 0, 786420, 7, 65536, 786421, 6, 0, 786422, 6, 0, 786423, 6, 0, 786424, 6, 0, 786425, 6, 0, 786426, 6, 0, 786427, 6, 0, 786428, 6, 0, 786429, 6, 0, 786430, 6, 0, 786431, 6, 0, 720896, 18, 0, 720897, 6, 0, 720898, 18, 0, 720899, 6, 0, 720900, 18, 0, 720901, 6, 0, 720902, 6, 0, 720903, 6, 0, 720904, 18, 65536, 720905, 18, 0, 720906, 6, 0, 720907, 6, 0, 720908, 18, 65536, 720909, 6, 0, 720910, 6, 65536, 720911, 6, 65536, 720912, 6, 0, 720913, 6, 0, 720914, 6, 0, 720915, 6, 0, 720916, 6, 0, 720917, 6, 0, 720918, 7, 0, 851956, 7, 65536, 851957, 6, 0, 851958, 6, 0, 851959, 6, 0, 851960, 6, 0, 851961, 6, 0, 851962, 6, 0, 851963, 6, 0, 851964, 14, 65536, 851965, 14, 65536, 851966, 14, 0, 851967, 14, 0, 786432, 14, 0, 786433, 14, 0, 786434, 14, 0, 786435, 14, 0, 786436, 14, 0, 786437, 18, 0, 786438, 14, 0, 786439, 14, 0, 786440, 14, 0, 786441, 14, 0, 786442, 14, 0, 786443, 14, 0, 786444, 14, 0, 786445, 14, 0, 786446, 6, 65536, 786447, 6, 65536, 786448, 6, 0, 786449, 6, 0, 786450, 6, 0, 786451, 6, 0, 786452, 6, 0, 786453, 6, 0, 786454, 7, 0, -655372, 2, 65536, -720874, 2, 0, -65514, 7, 0, -131050, 7, 0, -196586, 7, 0, -262122, 7, 0, -327658, 7, 0, -393194, 7, 0, -458730, 7, 0, -524266, 7, 0, -589802, 7, 0, -655338, 7, 0, -589836, 7, 65536, -524300, 7, 65536, -458764, 7, 65536, -393228, 7, 65536, -327692, 7, 65536, -262156, 7, 65536, -196620, 7, 65536, -131084, 7, 65536, -65548, 7, 65536, -12, 7, 65536) + +[node name="Grass" type="Node" parent="."] + +[node name="g1" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(173, 636) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g58" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(375, 642) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g63" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(434, 641) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g65" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(480, 642) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g60" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(413, 640) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g23" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(-44, 640) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g13" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(252, 641) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g41" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(549, 641) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g48" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(740, 641) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g55" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(206, 67) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g44" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(658, 639) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g12" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(324, 640) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g40" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(598, 639) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g46" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(695, 641) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g43" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(705, 640) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g25" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(427, 382) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g30" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(612, 383) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g37" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(109, 319) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g9" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(-20, 640) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g18" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(-86, 641) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g8" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(116, 640) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g21" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(-34, 642) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g22" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(-34, 642) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g6" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(51, 637) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g16" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(-108, 640) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g2" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(275, 637) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g39" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(564, 637) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g51" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(-185, 255) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g47" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(753, 639) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g42" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(610, 641) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g45" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(669, 640) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g14" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(164, 638) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g59" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(386, 639) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g64" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(445, 639) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g66" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(492, 640) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g26" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(439, 381) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g75" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(499, 74) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g73" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(563, 82) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g33" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(204, 319) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g36" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(132, 318) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g38" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(99, 318) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="f1" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(78, 312) +texture = ExtResource("19") + +[node name="f12" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(-47, 119) +texture = ExtResource("19") + +[node name="f13" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(-447, -10) +texture = ExtResource("19") + +[node name="f2" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(417, 629) +texture = ExtResource("19") + +[node name="f9" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(16, 629) +texture = ExtResource("19") + +[node name="f5" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(641, 629) +texture = ExtResource("19") + +[node name="f7" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(433, 61) +texture = ExtResource("19") + +[node name="f8" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(411, 374) +texture = ExtResource("19") + +[node name="f10" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(295, 434) +texture = ExtResource("19") + +[node name="f11" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(495, 187) +texture = ExtResource("19") + +[node name="f3" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(524, 70) +texture = ExtResource("19") + +[node name="f4" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(973, -10) +texture = ExtResource("19") + +[node name="F5" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(835, 628) +texture = ExtResource("19") + +[node name="f6" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(637, 376) +texture = ExtResource("19") + +[node name="g29" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(603, 381) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g74" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(578, 88) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g27" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(498, 381) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g34" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(228, 318) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g70" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(467.8, 189.8) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g71" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(563.8, 189.8) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g78" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(50.0001, 128) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g7" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(107, 637) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g69" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(272, 447) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g20" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(-58, 640) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g17" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(-96, 637) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g3" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(96, 638) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="g53" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(216.8, 445.8) +scale = Vector2(0.8, 0.8) +texture = ExtResource("13") + +[node name="g56" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(150.8, 446.8) +scale = Vector2(0.8, 0.8) +texture = ExtResource("12") + +[node name="g68" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(139.8, 447.8) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="g67" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(40, 638) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="g49" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(645, 638) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="g50" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(764, 640) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="g52" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(186, 66) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="g72" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(404, 190) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="g77" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(-14, 124) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="g57" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(-163, 255) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="g54" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(227, 64) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="g4" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(366, 638) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="g61" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(424, 639) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="g62" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(400, 639) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="g11" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(317, 638) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="g10" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(262, 637) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="g24" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(416, 382) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="v1" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(303, 505) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v2" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(212, 497) +scale = Vector2(1, -1) +texture = ExtResource("22") + +[node name="v44" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(216, 688) +scale = Vector2(1, -1) +texture = ExtResource("22") + +[node name="v45" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(414, 689) +scale = Vector2(1, -1) +texture = ExtResource("22") + +[node name="v7" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(97, 497) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v43" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(91, 690) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v47" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(445, 686) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v48" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(754, 686) +scale = Vector2(1, -1) +texture = ExtResource("22") + +[node name="v49" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(785, 683) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v46" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(-163, 303) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v8" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(241, 500) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v28" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(443, 429) +scale = Vector2(1, -1) +texture = ExtResource("22") + +[node name="v29" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(524, 428) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v30" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(561, 430) +scale = Vector2(1, -1) +texture = ExtResource("22") + +[node name="v31" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(589, 430) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v32" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(649, 431) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v33" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(692, 432) +scale = Vector2(1, -1) +texture = ExtResource("22") + +[node name="v34" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(562, 238) +scale = Vector2(1, -1) +texture = ExtResource("22") + +[node name="v35" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(481, 238) +scale = Vector2(1, -1) +texture = ExtResource("22") + +[node name="v36" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(423, 239) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v37" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(506, 237) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v9" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(145, 365) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v21" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(260, 113) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v22" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(143, 112) +scale = Vector2(1, -1) +texture = ExtResource("22") + +[node name="v23" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(405, 113) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v27" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(605, 146) +scale = Vector2(1, -1) +texture = ExtResource("22") + +[node name="v25" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(636, 160) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v26" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(636, 160) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v24" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(385, 113) +scale = Vector2(1, -1) +texture = ExtResource("22") + +[node name="v10" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(30, 176) +scale = Vector2(1, -1) +texture = ExtResource("22") + +[node name="v11" type="Sprite2D" parent="Grass"] +z_index = 1 +material = ExtResource("18") +position = Vector2(-30, 177) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v12" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(0, 178) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v13" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(204, 114) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v14" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(358, 132) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v15" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(440, 131) +scale = Vector2(1, -1) +texture = ExtResource("22") + +[node name="v16" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(307, 115) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v17" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(535, 137) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v38" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(456, 253) +scale = Vector2(1, -1) +texture = ExtResource("22") + +[node name="v39" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(541, 245) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v18" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(693, 190) +scale = Vector2(1, -1) +texture = ExtResource("22") + +[node name="v19" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(509, 517) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v20" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(414, 534) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v40" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(656, 532) +scale = Vector2(1, -1) +texture = ExtResource("22") + +[node name="v41" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(686, 515) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v42" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(489, 537) +scale = Vector2(1, -1) +texture = ExtResource("22") + +[node name="v3" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(276, 503) +scale = Vector2(1, -1) +texture = ExtResource("22") + +[node name="v4" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(194, 386) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v5" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(95, 371) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="v6" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(244, 374) +scale = Vector2(1, -1) +texture = ExtResource("21") + +[node name="g32" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(217, 319) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="g35" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(120, 319) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="g31" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(623, 382) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="g79" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(1069, 380) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="g76" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(591, 89) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="g28" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(507, 381) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="g5" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(-9, 637) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="g19" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(-76, 640) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="g15" type="Sprite2D" parent="Grass"] +z_index = -1 +material = ExtResource("18") +position = Vector2(-118, 638) +scale = Vector2(0.8, 0.8) +texture = ExtResource("10") + +[node name="Flowers" type="Node" parent="."] + +[node name="Flower1" type="Sprite2D" parent="Flowers"] +z_index = -1 +material = ExtResource("18") +position = Vector2(314, 638) +scale = Vector2(0.8, 0.8) +texture = ExtResource("11") + +[node name="Flower9" type="Sprite2D" parent="Flowers"] +z_index = -1 +material = ExtResource("18") +position = Vector2(459, 637) +scale = Vector2(0.8, 0.8) +texture = ExtResource("11") + +[node name="Flower10" type="Sprite2D" parent="Flowers"] +z_index = -1 +material = ExtResource("18") +position = Vector2(618, 638) +scale = Vector2(0.8, 0.8) +texture = ExtResource("11") + +[node name="Flower11" type="Sprite2D" parent="Flowers"] +z_index = -1 +material = ExtResource("18") +position = Vector2(714, 639) +scale = Vector2(0.8, 0.8) +texture = ExtResource("11") + +[node name="Flower12" type="Sprite2D" parent="Flowers"] +z_index = -1 +material = ExtResource("18") +position = Vector2(244, 314) +scale = Vector2(0.8, 0.8) +texture = ExtResource("11") + +[node name="Flower5" type="Sprite2D" parent="Flowers"] +z_index = -1 +material = ExtResource("18") +position = Vector2(83, 637) +scale = Vector2(0.8, 0.8) +texture = ExtResource("11") + +[node name="Flower13" type="Sprite2D" parent="Flowers"] +z_index = 1 +position = Vector2(160, 651) +scale = Vector2(0.8, 0.8) +texture = ExtResource("20") + +[node name="Flower14" type="Sprite2D" parent="Flowers"] +z_index = 1 +position = Vector2(370, 652) +scale = Vector2(0.8, 0.8) +texture = ExtResource("20") + +[node name="Flower20" type="Sprite2D" parent="Flowers"] +z_index = 1 +position = Vector2(186, 457) +scale = Vector2(0.8, 0.8) +texture = ExtResource("20") + +[node name="Flower21" type="Sprite2D" parent="Flowers"] +z_index = 1 +position = Vector2(208, 456) +scale = Vector2(0.8, 0.8) +texture = ExtResource("20") + +[node name="Flower22" type="Sprite2D" parent="Flowers"] +z_index = 1 +position = Vector2(324.8, 75.8001) +scale = Vector2(0.8, 0.8) +texture = ExtResource("20") + +[node name="Flower23" type="Sprite2D" parent="Flowers"] +z_index = 1 +position = Vector2(346.8, 74.8) +scale = Vector2(0.8, 0.8) +texture = ExtResource("20") + +[node name="Flower15" type="Sprite2D" parent="Flowers"] +z_index = 1 +position = Vector2(509, 652) +scale = Vector2(-0.8, 0.8) +texture = ExtResource("20") + +[node name="Flower16" type="Sprite2D" parent="Flowers"] +z_index = 1 +position = Vector2(714, 649) +scale = Vector2(-0.8, 0.8) +texture = ExtResource("20") + +[node name="Flower18" type="Sprite2D" parent="Flowers"] +z_index = 1 +position = Vector2(654, 395) +scale = Vector2(-0.8, 0.8) +texture = ExtResource("20") + +[node name="Flower17" type="Sprite2D" parent="Flowers"] +z_index = 1 +position = Vector2(727, 653) +scale = Vector2(0.8, 0.8) +texture = ExtResource("20") + +[node name="Flower19" type="Sprite2D" parent="Flowers"] +z_index = 1 +position = Vector2(556, 394) +scale = Vector2(0.8, 0.8) +texture = ExtResource("20") + +[node name="Flower6" type="Sprite2D" parent="Flowers"] +z_index = -1 +material = ExtResource("18") +position = Vector2(-67, 638) +scale = Vector2(0.8, 0.8) +texture = ExtResource("11") + +[node name="Flower2" type="Sprite2D" parent="Flowers"] +z_index = -1 +material = ExtResource("18") +position = Vector2(191, 638) +scale = Vector2(0.8, 0.8) +texture = ExtResource("11") + +[node name="Flower4" type="Sprite2D" parent="Flowers"] +z_index = -1 +material = ExtResource("18") +position = Vector2(126, 638) +scale = Vector2(0.8, 0.8) +texture = ExtResource("11") + +[node name="Flower7" type="Sprite2D" parent="Flowers"] +z_index = -1 +material = ExtResource("18") +position = Vector2(448, 382) +scale = Vector2(0.8, 0.8) +texture = ExtResource("11") + +[node name="Flower8" type="Sprite2D" parent="Flowers"] +z_index = -1 +material = ExtResource("18") +position = Vector2(-142, 254) +scale = Vector2(0.8, 0.8) +texture = ExtResource("11") + +[node name="Flower3" type="Sprite2D" parent="Flowers"] +z_index = -1 +material = ExtResource("18") +position = Vector2(584, 382) +scale = Vector2(0.8, 0.8) +texture = ExtResource("11") + +[node name="Coins" type="Node" parent="."] + +[node name="CoinsHorizontal1" type="Node2D" parent="Coins"] +position = Vector2(700, 610) + +[node name="Coin" parent="Coins/CoinsHorizontal1" instance=ExtResource("4")] + +[node name="Coin2" parent="Coins/CoinsHorizontal1" instance=ExtResource("4")] +position = Vector2(30, 0) + +[node name="Coin3" parent="Coins/CoinsHorizontal1" instance=ExtResource("4")] +position = Vector2(60, 0) + +[node name="CoinsHorizontal3" type="Node2D" parent="Coins"] +position = Vector2(154, 43) + +[node name="Coin" parent="Coins/CoinsHorizontal3" instance=ExtResource("4")] + +[node name="Coin2" parent="Coins/CoinsHorizontal3" instance=ExtResource("4")] +position = Vector2(30, 0) + +[node name="Coin3" parent="Coins/CoinsHorizontal3" instance=ExtResource("4")] +position = Vector2(60, 0) + +[node name="CoinsHorizontal2" type="Node2D" parent="Coins"] +position = Vector2(200, 610) + +[node name="Coin" parent="Coins/CoinsHorizontal2" instance=ExtResource("4")] + +[node name="Coin2" parent="Coins/CoinsHorizontal2" instance=ExtResource("4")] +position = Vector2(30, 0) + +[node name="Coin3" parent="Coins/CoinsHorizontal2" instance=ExtResource("4")] +position = Vector2(60, 0) + +[node name="CoinsArc1" type="Node2D" parent="Coins"] +position = Vector2(307, 594) + +[node name="Coin" parent="Coins/CoinsArc1" instance=ExtResource("4")] + +[node name="Coin2" parent="Coins/CoinsArc1" instance=ExtResource("4")] +position = Vector2(30, -10) + +[node name="Coin3" parent="Coins/CoinsArc1" instance=ExtResource("4")] +position = Vector2(60, 0) + +[node name="CoinsArc2" type="Node2D" parent="Coins"] +position = Vector2(453, 332) + +[node name="Coin" parent="Coins/CoinsArc2" instance=ExtResource("4")] + +[node name="Coin2" parent="Coins/CoinsArc2" instance=ExtResource("4")] +position = Vector2(30, -10) + +[node name="Coin3" parent="Coins/CoinsArc2" instance=ExtResource("4")] +position = Vector2(60, 0) + +[node name="CoinsArc4" type="Node2D" parent="Coins"] +position = Vector2(122, 406) + +[node name="Coin" parent="Coins/CoinsArc4" instance=ExtResource("4")] + +[node name="Coin2" parent="Coins/CoinsArc4" instance=ExtResource("4")] +position = Vector2(30, -10) + +[node name="Coin3" parent="Coins/CoinsArc4" instance=ExtResource("4")] +position = Vector2(60, 0) + +[node name="CoinsArc3" type="Node2D" parent="Coins"] +position = Vector2(594, 332) + +[node name="Coin" parent="Coins/CoinsArc3" instance=ExtResource("4")] + +[node name="Coin2" parent="Coins/CoinsArc3" instance=ExtResource("4")] +position = Vector2(30, -10) + +[node name="Coin3" parent="Coins/CoinsArc3" instance=ExtResource("4")] +position = Vector2(60, 0) + +[node name="Platforms" type="Node" parent="."] + +[node name="Platform" parent="Platforms" instance=ExtResource("3")] +z_index = 0 +position = Vector2(707, 400) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Platforms/Platform"] +callback_mode_process = 0 +libraries = { +"": SubResource("AnimationLibrary_knmjc") +} +autoplay = "move" + +[node name="Platform2" parent="Platforms" instance=ExtResource("3")] +position = Vector2(-28, 645) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Platforms/Platform2"] +callback_mode_process = 0 +libraries = { +"": SubResource("AnimationLibrary_frb4n") +} +autoplay = "move" + +[node name="PlatformStatic" type="StaticBody2D" parent="Platforms"] +z_index = -1 +position = Vector2(611, 135) +rotation = 0.355618 +collision_layer = 16 +collision_mask = 0 + +[node name="Sprite2" type="Sprite2D" parent="Platforms/PlatformStatic"] +position = Vector2(-88.692, 10.5003) +rotation = -0.246293 +texture = ExtResource("6") + +[node name="Sprite2D" type="Sprite2D" parent="Platforms/PlatformStatic"] +texture = ExtResource("6") + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Platforms/PlatformStatic"] +position = Vector2(-3.20203, -8.41145) +polygon = PackedVector2Array(-170.838, 7.9798, -90.8381, -15.201, 95.0401, -20.233, 83.4959, 3.25599, -51.1185, 8.44958, -176.787, 34.856) + +[node name="Enemies" type="Node" parent="."] + +[node name="Enemy2" parent="Enemies" instance=ExtResource("2")] +z_index = 2 +position = Vector2(544, 355) + +[node name="Enemy3" parent="Enemies" instance=ExtResource("2")] +z_index = 2 +position = Vector2(492, 610) + +[node name="Enemy4" parent="Enemies" instance=ExtResource("2")] +z_index = 2 +position = Vector2(395, 53) + +[node name="ParallaxBackground" parent="." instance=ExtResource("7")] + +[node name="Trees" type="Node" parent="."] + +[node name="T1" type="Sprite2D" parent="Trees"] +z_index = 1 +material = ExtResource("18") +position = Vector2(587, 586) +texture = ExtResource("14") + +[node name="T4" type="Sprite2D" parent="Trees"] +z_index = 1 +material = ExtResource("18") +position = Vector2(282, 11) +texture = ExtResource("14") + +[node name="T7" type="Sprite2D" parent="Trees"] +z_index = 1 +material = ExtResource("18") +position = Vector2(3, 77) +texture = ExtResource("14") + +[node name="T8" type="Sprite2D" parent="Trees"] +z_index = 1 +material = ExtResource("18") +position = Vector2(-315, -51) +texture = ExtResource("14") + +[node name="T10" type="Sprite2D" parent="Trees"] +z_index = 1 +material = ExtResource("18") +position = Vector2(1140, -48) +texture = ExtResource("14") + +[node name="T2" type="Sprite2D" parent="Trees"] +z_index = 1 +material = ExtResource("18") +position = Vector2(168, 266) +texture = ExtResource("15") + +[node name="T6" type="Sprite2D" parent="Trees"] +z_index = 1 +material = ExtResource("18") +position = Vector2(422, 9) +texture = ExtResource("15") + +[node name="T3" type="Sprite2D" parent="Trees"] +z_index = 1 +material = ExtResource("18") +position = Vector2(1011, -50) +texture = ExtResource("15") + +[node name="T9" type="Sprite2D" parent="Trees"] +z_index = 1 +material = ExtResource("18") +position = Vector2(-406, -49) +texture = ExtResource("15") + +[node name="T5" type="Sprite2D" parent="Trees"] +z_index = 1 +material = ExtResource("18") +position = Vector2(129, 588) +texture = ExtResource("15") + +[node name="Bushes" type="Node" parent="."] + +[node name="B1" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(278, 620) +texture = ExtResource("16") + +[node name="B13" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(483, 627) +texture = ExtResource("16") + +[node name="B17" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(320, 49) +texture = ExtResource("16") + +[node name="B7" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(485, 369) +texture = ExtResource("16") + +[node name="B24" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(185, 433) +texture = ExtResource("16") + +[node name="B22" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(473, 57) +texture = ExtResource("16") + +[node name="B16" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(-75, 628) +texture = ExtResource("16") + +[node name="B11" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(-230, -10) +texture = ExtResource("16") + +[node name="B14" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(162, 66) +texture = ExtResource("16") + +[node name="B12" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(927, -3) +rotation = -0.462162 +texture = ExtResource("16") + +[node name="B9" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(637, 379) +rotation = 0.181514 +texture = ExtResource("16") +offset = Vector2(35.3364, -1.40192) + +[node name="B20" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(643, 110) +rotation = 0.181514 +texture = ExtResource("16") +offset = Vector2(35.3364, -1.40192) + +[node name="B10" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(-233, -2) +rotation = -2.96008 +scale = Vector2(1, -1) +texture = ExtResource("16") +offset = Vector2(35.3364, -1.40192) + +[node name="B31" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(-498.685, -14.4639) +texture = ExtResource("16") + +[node name="B32" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(-501.685, -6.46387) +rotation = -2.96008 +scale = Vector2(1, -1) +texture = ExtResource("16") +offset = Vector2(35.3364, -1.40192) + +[node name="B33" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(1141.31, -16.4639) +texture = ExtResource("16") + +[node name="B34" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(1138.31, -8.46387) +rotation = -2.96008 +scale = Vector2(1, -1) +texture = ExtResource("16") +offset = Vector2(35.3364, -1.40192) + +[node name="B21" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(669, 113) +rotation = -2.96008 +scale = Vector2(1, -1) +texture = ExtResource("16") +offset = Vector2(35.3364, -1.40192) + +[node name="B27" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(572, 191) +rotation = -2.96008 +scale = Vector2(1, -1) +texture = ExtResource("16") +offset = Vector2(35.3364, -1.40192) + +[node name="B28" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(63, 140) +rotation = -2.96008 +scale = Vector2(1, -1) +texture = ExtResource("16") +offset = Vector2(35.3364, -1.40192) + +[node name="B15" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(-74, 645) +rotation = -2.96008 +scale = Vector2(1, -1) +texture = ExtResource("16") +offset = Vector2(35.3364, -1.40192) + +[node name="B5" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(142, 643) +texture = ExtResource("16") + +[node name="B4" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(324, 639) +texture = ExtResource("16") + +[node name="B26" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(105, 451) +texture = ExtResource("16") + +[node name="B2" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(526, 637) +rotation = -3.14159 +scale = Vector2(1, -1) +texture = ExtResource("16") + +[node name="B8" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(522, 387) +rotation = 2.70506 +scale = Vector2(1, -1) +texture = ExtResource("16") + +[node name="B6" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(803, 622) +rotation = -3.14159 +scale = Vector2(1, -1) +texture = ExtResource("16") + +[node name="B29" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(707, 621) +rotation = -3.14159 +scale = Vector2(1, -1) +texture = ExtResource("16") + +[node name="B30" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(739, 638) +rotation = -3.14159 +scale = Vector2(1, -1) +texture = ExtResource("16") + +[node name="B23" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(669, 629) +rotation = -3.14159 +scale = Vector2(1, -1) +texture = ExtResource("16") + +[node name="B18" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(373, 60) +rotation = -3.14159 +scale = Vector2(1, -1) +texture = ExtResource("16") + +[node name="B3" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(224, 634) +rotation = -3.14159 +scale = Vector2(1, -1) +texture = ExtResource("16") + +[node name="B25" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(142, 439) +rotation = -3.14159 +scale = Vector2(1, -1) +texture = ExtResource("16") + +[node name="B19" type="Sprite2D" parent="Bushes"] +z_index = -2 +material = ExtResource("18") +position = Vector2(261, 57) +rotation = -3.14159 +scale = Vector2(1, -1) +texture = ExtResource("16") + +[node name="Rocks" type="Node" parent="."] + +[node name="R1" type="Sprite2D" parent="Rocks"] +z_index = -2 +position = Vector2(376, 624) +texture = ExtResource("17") + +[node name="R9" type="Sprite2D" parent="Rocks"] +z_index = -2 +position = Vector2(240, 426) +texture = ExtResource("17") + +[node name="R10" type="Sprite2D" parent="Rocks"] +z_index = -2 +position = Vector2(428, 182) +texture = ExtResource("17") + +[node name="R11" type="Sprite2D" parent="Rocks"] +z_index = -2 +position = Vector2(445, 197) +texture = ExtResource("17") + +[node name="R8" type="Sprite2D" parent="Rocks"] +z_index = -2 +position = Vector2(762, 634) +texture = ExtResource("17") + +[node name="R7" type="Sprite2D" parent="Rocks"] +z_index = -2 +position = Vector2(194, 316) +texture = ExtResource("17") + +[node name="R3" type="Sprite2D" parent="Rocks"] +z_index = -2 +position = Vector2(573, 378) +texture = ExtResource("17") + +[node name="R5" type="Sprite2D" parent="Rocks"] +z_index = -2 +position = Vector2(-187, 232) +texture = ExtResource("17") + +[node name="R12" type="Sprite2D" parent="Rocks"] +z_index = -2 +position = Vector2(-164, 256) +texture = ExtResource("17") + +[node name="R6" type="Sprite2D" parent="Rocks"] +z_index = -2 +position = Vector2(558, 62) +texture = ExtResource("17") + +[node name="R4" type="Sprite2D" parent="Rocks"] +z_index = -2 +position = Vector2(1048, -17) +texture = ExtResource("17") + +[node name="R13" type="Sprite2D" parent="Rocks"] +z_index = -2 +position = Vector2(-356, -17) +texture = ExtResource("17") + +[node name="R2" type="Sprite2D" parent="Rocks"] +z_index = -2 +position = Vector2(72, 639) +scale = Vector2(0.5, 0.5) +texture = ExtResource("17") diff --git a/2d/layered_tile_maps/platformer/level/platforms/moving_platform.webp b/2d/layered_tile_maps/platformer/level/platforms/moving_platform.webp new file mode 100644 index 0000000..b70e37e Binary files /dev/null and b/2d/layered_tile_maps/platformer/level/platforms/moving_platform.webp differ diff --git a/2d/layered_tile_maps/platformer/level/platforms/moving_platform.webp.import b/2d/layered_tile_maps/platformer/level/platforms/moving_platform.webp.import new file mode 100644 index 0000000..43b754b --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/platforms/moving_platform.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bxsmiv7k3fngt" +path="res://.godot/imported/moving_platform.webp-824eb0b4847e7f3addce4f7937b2372d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/platforms/moving_platform.webp" +dest_files=["res://.godot/imported/moving_platform.webp-824eb0b4847e7f3addce4f7937b2372d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/level/platforms/one_way_platform.webp b/2d/layered_tile_maps/platformer/level/platforms/one_way_platform.webp new file mode 100644 index 0000000..56af270 Binary files /dev/null and b/2d/layered_tile_maps/platformer/level/platforms/one_way_platform.webp differ diff --git a/2d/layered_tile_maps/platformer/level/platforms/one_way_platform.webp.import b/2d/layered_tile_maps/platformer/level/platforms/one_way_platform.webp.import new file mode 100644 index 0000000..216ab47 --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/platforms/one_way_platform.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dbcbwhddtu3x" +path="res://.godot/imported/one_way_platform.webp-c9ee141e1641b48bda593a8585ce20a7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/platforms/one_way_platform.webp" +dest_files=["res://.godot/imported/one_way_platform.webp-c9ee141e1641b48bda593a8585ce20a7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/level/platforms/platform.tscn b/2d/layered_tile_maps/platformer/level/platforms/platform.tscn new file mode 100644 index 0000000..ea8d668 --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/platforms/platform.tscn @@ -0,0 +1,174 @@ +[gd_scene load_steps=10 format=3 uid="uid://cky6e5nl0nyod"] + +[ext_resource type="Material" uid="uid://djwm5nol3d801" path="res://level/props/wind_sway.tres" id="1"] +[ext_resource type="Texture2D" uid="uid://bxsmiv7k3fngt" path="res://level/platforms/moving_platform.webp" id="2"] +[ext_resource type="Texture2D" uid="uid://bj6am5nfc0k73" path="res://level/props/grass_1.webp" id="3"] +[ext_resource type="Texture2D" uid="uid://bju7r7jqn8bqy" path="res://level/props/grass_2.webp" id="4"] +[ext_resource type="Texture2D" uid="uid://upfcr5xg5fvh" path="res://level/props/grass_3.webp" id="5"] +[ext_resource type="Texture2D" uid="uid://cqydct6vajobg" path="res://level/props/bush_1.webp" id="6"] +[ext_resource type="Texture2D" uid="uid://bu54lwrkcng25" path="res://level/props/vine_2.webp" id="7"] +[ext_resource type="Texture2D" uid="uid://bvu4vgnc84r84" path="res://level/props/vine_1.webp" id="8"] + +[sub_resource type="RectangleShape2D" id="1"] +size = Vector2(192, 27) + +[node name="Platform" type="AnimatableBody2D"] +z_index = -1 +position = Vector2(-1, 0) +collision_layer = 8 + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource("2") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2(0, -7.5) +shape = SubResource("1") +one_way_collision = true + +[node name="g67" type="Sprite2D" parent="."] +z_index = -1 +material = ExtResource("1") +position = Vector2(77, -37) +scale = Vector2(0.8, 0.8) +texture = ExtResource("3") + +[node name="g69" type="Sprite2D" parent="."] +z_index = -1 +material = ExtResource("1") +position = Vector2(-1.99999, -38) +scale = Vector2(0.8, 0.8) +texture = ExtResource("3") + +[node name="g68" type="Sprite2D" parent="."] +z_index = -1 +material = ExtResource("1") +position = Vector2(-52, -35) +scale = Vector2(0.8, 0.8) +texture = ExtResource("3") + +[node name="g1" type="Sprite2D" parent="."] +z_index = -1 +material = ExtResource("1") +position = Vector2(-36, -35) +scale = Vector2(0.8, 0.8) +texture = ExtResource("5") + +[node name="g3" type="Sprite2D" parent="."] +z_index = -1 +material = ExtResource("1") +position = Vector2(-82, -33) +scale = Vector2(0.8, 0.8) +texture = ExtResource("5") + +[node name="g2" type="Sprite2D" parent="."] +z_index = -1 +material = ExtResource("1") +position = Vector2(31, -36) +scale = Vector2(0.8, 0.8) +texture = ExtResource("5") + +[node name="g4" type="Sprite2D" parent="."] +z_index = -1 +material = ExtResource("1") +position = Vector2(-22, -30) +scale = Vector2(0.8, 0.8) +texture = ExtResource("5") + +[node name="g14" type="Sprite2D" parent="."] +z_index = -1 +material = ExtResource("1") +position = Vector2(51, -38) +scale = Vector2(0.8, 0.8) +texture = ExtResource("4") + +[node name="g17" type="Sprite2D" parent="."] +z_index = -1 +material = ExtResource("1") +position = Vector2(65, -32) +scale = Vector2(0.8, 0.8) +texture = ExtResource("4") + +[node name="g16" type="Sprite2D" parent="."] +z_index = -1 +material = ExtResource("1") +position = Vector2(17, -36) +scale = Vector2(0.8, 0.8) +texture = ExtResource("4") + +[node name="g15" type="Sprite2D" parent="."] +z_index = -1 +material = ExtResource("1") +position = Vector2(-71, -35) +scale = Vector2(0.8, 0.8) +texture = ExtResource("4") + +[node name="B3" type="Sprite2D" parent="."] +z_index = -2 +material = ExtResource("1") +position = Vector2(-2, -58) +rotation = -3.14159 +scale = Vector2(1, -1) +texture = ExtResource("6") + +[node name="B4" type="Sprite2D" parent="."] +z_index = -2 +material = ExtResource("1") +position = Vector2(37, -42) +rotation = -3.14159 +scale = Vector2(1, -1) +texture = ExtResource("6") + +[node name="B5" type="Sprite2D" parent="."] +z_index = -2 +material = ExtResource("1") +position = Vector2(-32, -41) +texture = ExtResource("6") + +[node name="v31" type="Sprite2D" parent="."] +z_index = 1 +material = ExtResource("1") +position = Vector2(-21, 18) +scale = Vector2(1, -1) +texture = ExtResource("8") + +[node name="v35" type="Sprite2D" parent="."] +z_index = -1 +material = ExtResource("1") +position = Vector2(35, 7) +scale = Vector2(1, -1) +texture = ExtResource("8") + +[node name="v32" type="Sprite2D" parent="."] +z_index = 1 +material = ExtResource("1") +position = Vector2(87, 16) +scale = Vector2(1, -1) +texture = ExtResource("8") + +[node name="v33" type="Sprite2D" parent="."] +z_index = 1 +material = ExtResource("1") +position = Vector2(-85, 15) +scale = Vector2(1, -1) +texture = ExtResource("7") + +[node name="v34" type="Sprite2D" parent="."] +z_index = 1 +material = ExtResource("1") +position = Vector2(56, 18) +scale = Vector2(1, -1) +texture = ExtResource("7") + +[node name="v36" type="Sprite2D" parent="."] +z_index = -1 +material = ExtResource("1") +position = Vector2(-9, 11) +scale = Vector2(1, -1) +texture = ExtResource("7") + +[node name="v37" type="Sprite2D" parent="."] +z_index = -1 +material = ExtResource("1") +position = Vector2(-61, 7) +scale = Vector2(1, -1) +texture = ExtResource("7") diff --git a/2d/layered_tile_maps/platformer/level/props/bush_1.webp b/2d/layered_tile_maps/platformer/level/props/bush_1.webp new file mode 100644 index 0000000..877e06e Binary files /dev/null and b/2d/layered_tile_maps/platformer/level/props/bush_1.webp differ diff --git a/2d/layered_tile_maps/platformer/level/props/bush_1.webp.import b/2d/layered_tile_maps/platformer/level/props/bush_1.webp.import new file mode 100644 index 0000000..25890f9 --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/props/bush_1.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cqydct6vajobg" +path="res://.godot/imported/bush_1.webp-2c941d4905fffb7aac8b9a4f0795f477.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/props/bush_1.webp" +dest_files=["res://.godot/imported/bush_1.webp-2c941d4905fffb7aac8b9a4f0795f477.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/level/props/fern_1.webp b/2d/layered_tile_maps/platformer/level/props/fern_1.webp new file mode 100644 index 0000000..4504ace Binary files /dev/null and b/2d/layered_tile_maps/platformer/level/props/fern_1.webp differ diff --git a/2d/layered_tile_maps/platformer/level/props/fern_1.webp.import b/2d/layered_tile_maps/platformer/level/props/fern_1.webp.import new file mode 100644 index 0000000..a9bd0d0 --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/props/fern_1.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c5xpotfxdi0ms" +path="res://.godot/imported/fern_1.webp-6432deec8f4738ae772ee4830c3e28c1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/props/fern_1.webp" +dest_files=["res://.godot/imported/fern_1.webp-6432deec8f4738ae772ee4830c3e28c1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/level/props/flower_1.webp b/2d/layered_tile_maps/platformer/level/props/flower_1.webp new file mode 100644 index 0000000..e4fc90f Binary files /dev/null and b/2d/layered_tile_maps/platformer/level/props/flower_1.webp differ diff --git a/2d/layered_tile_maps/platformer/level/props/flower_1.webp.import b/2d/layered_tile_maps/platformer/level/props/flower_1.webp.import new file mode 100644 index 0000000..8480f39 --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/props/flower_1.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ddmq5iwm2qd1j" +path="res://.godot/imported/flower_1.webp-84ba29d4e2ecc60b0572e1c5d894fe0d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/props/flower_1.webp" +dest_files=["res://.godot/imported/flower_1.webp-84ba29d4e2ecc60b0572e1c5d894fe0d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/level/props/grass_1.webp b/2d/layered_tile_maps/platformer/level/props/grass_1.webp new file mode 100644 index 0000000..32e011d Binary files /dev/null and b/2d/layered_tile_maps/platformer/level/props/grass_1.webp differ diff --git a/2d/layered_tile_maps/platformer/level/props/grass_1.webp.import b/2d/layered_tile_maps/platformer/level/props/grass_1.webp.import new file mode 100644 index 0000000..cb5ba1f --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/props/grass_1.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bj6am5nfc0k73" +path="res://.godot/imported/grass_1.webp-1b5cfbc212a9ab5d9a705dce57a0e8a2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/props/grass_1.webp" +dest_files=["res://.godot/imported/grass_1.webp-1b5cfbc212a9ab5d9a705dce57a0e8a2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/level/props/grass_2.webp b/2d/layered_tile_maps/platformer/level/props/grass_2.webp new file mode 100644 index 0000000..a52a724 Binary files /dev/null and b/2d/layered_tile_maps/platformer/level/props/grass_2.webp differ diff --git a/2d/layered_tile_maps/platformer/level/props/grass_2.webp.import b/2d/layered_tile_maps/platformer/level/props/grass_2.webp.import new file mode 100644 index 0000000..f29cab4 --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/props/grass_2.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bju7r7jqn8bqy" +path="res://.godot/imported/grass_2.webp-0428af689a89f0d5f399b3adac76e01e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/props/grass_2.webp" +dest_files=["res://.godot/imported/grass_2.webp-0428af689a89f0d5f399b3adac76e01e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/level/props/grass_3.webp b/2d/layered_tile_maps/platformer/level/props/grass_3.webp new file mode 100644 index 0000000..57e87e1 Binary files /dev/null and b/2d/layered_tile_maps/platformer/level/props/grass_3.webp differ diff --git a/2d/layered_tile_maps/platformer/level/props/grass_3.webp.import b/2d/layered_tile_maps/platformer/level/props/grass_3.webp.import new file mode 100644 index 0000000..d6b9016 --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/props/grass_3.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://upfcr5xg5fvh" +path="res://.godot/imported/grass_3.webp-ed068a7b9ddb78a9d7877cb89604c0fd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/props/grass_3.webp" +dest_files=["res://.godot/imported/grass_3.webp-ed068a7b9ddb78a9d7877cb89604c0fd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/level/props/ground_flowers_1.webp b/2d/layered_tile_maps/platformer/level/props/ground_flowers_1.webp new file mode 100644 index 0000000..50a3010 Binary files /dev/null and b/2d/layered_tile_maps/platformer/level/props/ground_flowers_1.webp differ diff --git a/2d/layered_tile_maps/platformer/level/props/ground_flowers_1.webp.import b/2d/layered_tile_maps/platformer/level/props/ground_flowers_1.webp.import new file mode 100644 index 0000000..fd22017 --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/props/ground_flowers_1.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://crfy1osk1c1gc" +path="res://.godot/imported/ground_flowers_1.webp-708b8de83edb7e5a8a4e4107d5ce362b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/props/ground_flowers_1.webp" +dest_files=["res://.godot/imported/ground_flowers_1.webp-708b8de83edb7e5a8a4e4107d5ce362b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/level/props/rock_1.webp b/2d/layered_tile_maps/platformer/level/props/rock_1.webp new file mode 100644 index 0000000..3e825d8 Binary files /dev/null and b/2d/layered_tile_maps/platformer/level/props/rock_1.webp differ diff --git a/2d/layered_tile_maps/platformer/level/props/rock_1.webp.import b/2d/layered_tile_maps/platformer/level/props/rock_1.webp.import new file mode 100644 index 0000000..a7828d8 --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/props/rock_1.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://co8bwstg3ea6x" +path="res://.godot/imported/rock_1.webp-c802a1ccc33f04fcad7b9e7f864b9b7c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/props/rock_1.webp" +dest_files=["res://.godot/imported/rock_1.webp-c802a1ccc33f04fcad7b9e7f864b9b7c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/level/props/tree_1.webp b/2d/layered_tile_maps/platformer/level/props/tree_1.webp new file mode 100644 index 0000000..b5c98c4 Binary files /dev/null and b/2d/layered_tile_maps/platformer/level/props/tree_1.webp differ diff --git a/2d/layered_tile_maps/platformer/level/props/tree_1.webp.import b/2d/layered_tile_maps/platformer/level/props/tree_1.webp.import new file mode 100644 index 0000000..1d37b34 --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/props/tree_1.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://icddaryasunc" +path="res://.godot/imported/tree_1.webp-f58e5053ffaef9e0095066ea1992f7cb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/props/tree_1.webp" +dest_files=["res://.godot/imported/tree_1.webp-f58e5053ffaef9e0095066ea1992f7cb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/level/props/tree_2.webp b/2d/layered_tile_maps/platformer/level/props/tree_2.webp new file mode 100644 index 0000000..cfb4fbd Binary files /dev/null and b/2d/layered_tile_maps/platformer/level/props/tree_2.webp differ diff --git a/2d/layered_tile_maps/platformer/level/props/tree_2.webp.import b/2d/layered_tile_maps/platformer/level/props/tree_2.webp.import new file mode 100644 index 0000000..16e0e84 --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/props/tree_2.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dea1a76o6b0ix" +path="res://.godot/imported/tree_2.webp-c6a111f52655a9e5158dd0dc90d26884.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/props/tree_2.webp" +dest_files=["res://.godot/imported/tree_2.webp-c6a111f52655a9e5158dd0dc90d26884.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/level/props/vine_1.webp b/2d/layered_tile_maps/platformer/level/props/vine_1.webp new file mode 100644 index 0000000..0518090 Binary files /dev/null and b/2d/layered_tile_maps/platformer/level/props/vine_1.webp differ diff --git a/2d/layered_tile_maps/platformer/level/props/vine_1.webp.import b/2d/layered_tile_maps/platformer/level/props/vine_1.webp.import new file mode 100644 index 0000000..291c123 --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/props/vine_1.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bvu4vgnc84r84" +path="res://.godot/imported/vine_1.webp-6dd0b81d28006107c2ef3c2b0712758c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/props/vine_1.webp" +dest_files=["res://.godot/imported/vine_1.webp-6dd0b81d28006107c2ef3c2b0712758c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/level/props/vine_2.webp b/2d/layered_tile_maps/platformer/level/props/vine_2.webp new file mode 100644 index 0000000..ae0cf92 Binary files /dev/null and b/2d/layered_tile_maps/platformer/level/props/vine_2.webp differ diff --git a/2d/layered_tile_maps/platformer/level/props/vine_2.webp.import b/2d/layered_tile_maps/platformer/level/props/vine_2.webp.import new file mode 100644 index 0000000..5a3f42e --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/props/vine_2.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bu54lwrkcng25" +path="res://.godot/imported/vine_2.webp-fefcb8be103ba2c2eadfee25e1253e7a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/props/vine_2.webp" +dest_files=["res://.godot/imported/vine_2.webp-fefcb8be103ba2c2eadfee25e1253e7a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/level/props/wind_sway.tres b/2d/layered_tile_maps/platformer/level/props/wind_sway.tres new file mode 100644 index 0000000..548cd9f --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/props/wind_sway.tres @@ -0,0 +1,58 @@ +[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://djwm5nol3d801"] + +[sub_resource type="Shader" id="1"] +code = "// original wind shader from https://github.com/Maujoe/godot-simple-wind-shader-2d/tree/master/assets/maujoe.simple_wind_shader_2d +// original script modified by HungryProton so that the assets are moving differently : https://pastebin.com/VL3AfV8D +// +// speed - The speed of the wind movement. +// minStrength - The minimal strength of the wind movement. +// maxStrength - The maximal strength of the wind movement. +// strengthScale - Scalefactor for the wind strength. +// interval - The time between minimal and maximal strength changes. +// detail - The detail (number of waves) of the wind movement. +// distortion - The strength of geometry distortion. +// heightOffset - The height where the wind begins to move. By default 0.0. + +shader_type canvas_item; +render_mode blend_mix; + +// Wind settings. +uniform float speed = 1.0; +uniform float minStrength : hint_range(0.0, 1.0) = 0.05; +uniform float maxStrength : hint_range(0.0, 1.0) = 0.01; +uniform float strengthScale = 100.0; +uniform float interval = 3.5; +uniform float detail = 1.0; +uniform float distortion : hint_range(0.0, 1.0); +uniform float heightOffset : hint_range(0.0, 1.0); + +// With the offset value, you can if you want different moves for each asset. Just put a random value (1, 2, 3) in the editor. Don't forget to mark the material as unique if you use this +uniform float offset = 0; + + +float getWind(vec2 vertex, vec2 uv, float time){ + float diff = pow(maxStrength - minStrength, 2.0); + float strength = clamp(minStrength + diff + sin(time / interval) * diff, minStrength, maxStrength) * strengthScale; + float wind = (sin(time) + cos(time * detail)) * strength * max(0.0, (1.0-uv.y) - heightOffset); + + return wind; +} + +void vertex() { + vec4 pos = MODEL_MATRIX * vec4(0.0, 0.0, 0.0, 1.0); + float time = TIME * speed + offset; + //float time = TIME * speed + pos.x * pos.y ; not working when moving... + VERTEX.x += getWind(VERTEX.xy, UV, time); +}" + +[resource] +shader = SubResource("1") +shader_parameter/speed = 1.0 +shader_parameter/minStrength = 0.05 +shader_parameter/maxStrength = 0.01 +shader_parameter/strengthScale = 100.0 +shader_parameter/interval = 3.5 +shader_parameter/detail = 1.0 +shader_parameter/distortion = null +shader_parameter/heightOffset = null +shader_parameter/offset = 0.0 diff --git a/2d/layered_tile_maps/platformer/level/tiles.webp b/2d/layered_tile_maps/platformer/level/tiles.webp new file mode 100644 index 0000000..001c853 Binary files /dev/null and b/2d/layered_tile_maps/platformer/level/tiles.webp differ diff --git a/2d/layered_tile_maps/platformer/level/tiles.webp.import b/2d/layered_tile_maps/platformer/level/tiles.webp.import new file mode 100644 index 0000000..62d3b87 --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/tiles.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d0ops71sk562g" +path="res://.godot/imported/tiles.webp-4f56cd8ea452f8ba920d65a0b9099010.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/tiles.webp" +dest_files=["res://.godot/imported/tiles.webp-4f56cd8ea452f8ba920d65a0b9099010.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/level/tileset.tres b/2d/layered_tile_maps/platformer/level/tileset.tres new file mode 100644 index 0000000..b08da76 --- /dev/null +++ b/2d/layered_tile_maps/platformer/level/tileset.tres @@ -0,0 +1,1009 @@ +[gd_resource type="TileSet" load_steps=22 format=3 uid="uid://08mkofgbxx70"] + +[ext_resource type="Texture2D" uid="uid://d0ops71sk562g" path="res://level/tiles.webp" id="1"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_86n7h"] +texture = ExtResource("1") +texture_region_size = Vector2i(64, 64) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -22, 32, -22, 32, 32, -32, 32) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(32, -22, -32, -22, -32, 32, 32, 32) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 22, 32, 22, 32, -32, -32, -32) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(32, 22, -32, 22, -32, -32, 32, -32) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -22, 32, -22, 32, 32, -32, 32) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(32, -22, -32, -22, -32, 32, 32, 32) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 22, 32, 22, 32, -32, -32, -32) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(32, 22, -32, 22, -32, -32, 32, -32) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_6lnxi"] +texture = ExtResource("1") +margins = Vector2i(256, 64) +texture_region_size = Vector2i(64, 64) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_v64xb"] +texture = ExtResource("1") +margins = Vector2i(128, 192) +texture_region_size = Vector2i(64, 64) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(-26, -32, -36, -22, -32, -22, -32, 32, 32, 32, 32, -32) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 32, 32, 32, 32, -32, -32, -32) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(32, 32, -32, 32, -32, -32, 32, -32) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(32, -32, -32, -32, -32, 32, 32, 32) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 32, 32, 32, 32, -32, -32, -32) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(32, 32, -32, 32, -32, -32, 32, -32) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_61wbh"] +texture = ExtResource("1") +margins = Vector2i(192, 192) +texture_region_size = Vector2i(64, 64) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -22, 32, -22, 32, 32, -32, 32) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(32, -22, -32, -22, -32, 32, 32, 32) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 22, 32, 22, 32, -32, -32, -32) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(32, 22, -32, 22, -32, -32, 32, -32) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -22, 32, -22, 32, 32, -32, 32) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(32, -22, -32, -22, -32, 32, 32, 32) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 22, 32, 22, 32, -32, -32, -32) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(32, 22, -32, 22, -32, -32, 32, -32) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_mnnpc"] +texture = ExtResource("1") +margins = Vector2i(256, 192) +texture_region_size = Vector2i(64, 64) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -22, 32, -22, 32, 32, -32, 32) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(32, -22, -32, -22, -32, 32, 32, 32) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 22, 32, 22, 32, -32, -32, -32) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(32, 22, -32, 22, -32, -32, 32, -32) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -22, 32, -22, 32, 32, -32, 32) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(32, -22, -32, -22, -32, 32, 32, 32) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 22, 32, 22, 32, -32, -32, -32) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(32, 22, -32, 22, -32, -32, 32, -32) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_vhvu4"] +texture = ExtResource("1") +margins = Vector2i(320, 192) +texture_region_size = Vector2i(64, 64) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -22, 32, -22, 32, 32, -32, 32) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(32, -22, -32, -22, -32, 32, 32, 32) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 22, 32, 22, 32, -32, -32, -32) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(32, 22, -32, 22, -32, -32, 32, -32) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -22, 32, -22, 32, 32, -32, 32) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(32, -22, -32, -22, -32, 32, 32, 32) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 22, 32, 22, 32, -32, -32, -32) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(32, 22, -32, 22, -32, -32, 32, -32) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_nfnit"] +texture = ExtResource("1") +margins = Vector2i(384, 64) +texture_region_size = Vector2i(64, 64) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(32, -32, -32, -32, -32, 32, 32, 32) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 32, 32, 32, 32, -32, -32, -32) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(32, 32, -32, 32, -32, -32, 32, -32) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(32, -32, -32, -32, -32, 32, 32, 32) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 32, 32, 32, 32, -32, -32, -32) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(32, 32, -32, 32, -32, -32, 32, -32) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_o2np1"] +texture = ExtResource("1") +margins = Vector2i(384, 0) +texture_region_size = Vector2i(64, 64) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(32, -32, -32, -32, -32, 32, 32, 32) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 32, 32, 32, 32, -32, -32, -32) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(32, 32, -32, 32, -32, -32, 32, -32) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(32, -32, -32, -32, -32, 32, 32, 32) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 32, 32, 32, 32, -32, -32, -32) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(32, 32, -32, 32, -32, -32, 32, -32) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_yr11e"] +texture = ExtResource("1") +margins = Vector2i(448, 64) +texture_region_size = Vector2i(64, 64) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(32, -32, -32, -32, -32, 32, 32, 32) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 32, 32, 32, 32, -32, -32, -32) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(32, 32, -32, 32, -32, -32, 32, -32) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(32, -32, -32, -32, -32, 32, 32, 32) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 32, 32, 32, 32, -32, -32, -32) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(32, 32, -32, 32, -32, -32, 32, -32) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_74kwm"] +texture = ExtResource("1") +margins = Vector2i(320, 128) +texture_region_size = Vector2i(64, 64) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(32, -32, -32, -32, -32, 32, 32, 32) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 32, 32, 32, 32, -32, -32, -32) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(32, 32, -32, 32, -32, -32, 32, -32) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(32, -32, -32, -32, -32, 32, 32, 32) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 32, 32, 32, 32, -32, -32, -32) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(32, 32, -32, 32, -32, -32, 32, -32) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_jxo3y"] +texture = ExtResource("1") +margins = Vector2i(320, 64) +texture_region_size = Vector2i(64, 64) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(32, -32, -32, -32, -32, 32, 32, 32) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 32, 32, 32, 32, -32, -32, -32) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(32, 32, -32, 32, -32, -32, 32, -32) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(32, -32, -32, -32, -32, 32, 32, 32) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 32, 32, 32, 32, -32, -32, -32) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(32, 32, -32, 32, -32, -32, 32, -32) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_70rax"] +texture = ExtResource("1") +texture_region_size = Vector2i(64, 64) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_exupg"] +texture = ExtResource("1") +margins = Vector2i(64, 0) +texture_region_size = Vector2i(64, 64) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -22, 32, -22, 32, 32, -32, 32) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(32, -22, -32, -22, -32, 32, 32, 32) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 22, 32, 22, 32, -32, -32, -32) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(32, 22, -32, 22, -32, -32, 32, -32) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -22, 32, -22, 32, 32, -32, 32) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(32, -22, -32, -22, -32, 32, 32, 32) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 22, 32, 22, 32, -32, -32, -32) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(32, 22, -32, 22, -32, -32, 32, -32) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_vhpsr"] +texture = ExtResource("1") +margins = Vector2i(128, 0) +texture_region_size = Vector2i(64, 64) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -22, 32, -22, 32, 14, -32, 14) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(32, -22, -32, -22, -32, 14, 32, 14) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 22, 32, 22, 32, -14, -32, -14) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(32, 22, -32, 22, -32, -14, 32, -14) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -22, 32, -22, 32, 14, -32, 14) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(32, -22, -32, -22, -32, 14, 32, 14) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 22, 32, 22, 32, -14, -32, -14) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(32, 22, -32, 22, -32, -14, 32, -14) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_cyfft"] +texture = ExtResource("1") +margins = Vector2i(192, 0) +texture_region_size = Vector2i(64, 64) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -22, 32, -22, 32, 11, -32, 11) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(32, -22, -32, -22, -32, 11, 32, 11) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 22, 32, 22, 32, -11, -32, -11) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(32, 22, -32, 22, -32, -11, 32, -11) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -22, 32, -22, 32, 11, -32, 11) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(32, -22, -32, -22, -32, 11, 32, 11) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 22, 32, 22, 32, -11, -32, -11) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(32, 22, -32, 22, -32, -11, 32, -11) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_bhnsj"] +texture = ExtResource("1") +margins = Vector2i(256, 0) +texture_region_size = Vector2i(64, 64) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_xb6sn"] +texture = ExtResource("1") +margins = Vector2i(0, 64) +texture_region_size = Vector2i(64, 64) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(32, -32, -32, -32, -32, 32, 32, 32) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 32, 32, 32, 32, -32, -32, -32) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(32, 32, -32, 32, -32, -32, 32, -32) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(32, -32, -32, -32, -32, 32, 32, 32) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 32, 32, 32, 32, -32, -32, -32) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(32, 32, -32, 32, -32, -32, 32, -32) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_vh3ia"] +texture = ExtResource("1") +margins = Vector2i(64, 64) +texture_region_size = Vector2i(64, 64) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(32, -32, -32, -32, -32, 32, 32, 32) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 32, 32, 32, 32, -32, -32, -32) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(32, 32, -32, 32, -32, -32, 32, -32) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(32, -32, -32, -32, -32, 32, 32, 32) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 32, 32, 32, 32, -32, -32, -32) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(32, 32, -32, 32, -32, -32, 32, -32) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_rkc7e"] +texture = ExtResource("1") +margins = Vector2i(64, 128) +texture_region_size = Vector2i(64, 64) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(32, -32, -32, -32, -32, 32, 32, 32) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 32, 32, 32, 32, -32, -32, -32) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(32, 32, -32, 32, -32, -32, 32, -32) +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(32, -32, -32, -32, -32, 32, 32, 32) +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 32, 32, 32, 32, -32, -32, -32) +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(32, 32, -32, 32, -32, -32, 32, -32) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_pxbka"] +texture = ExtResource("1") +margins = Vector2i(128, 128) +texture_region_size = Vector2i(64, 64) +0:0/next_alternative_id = 8 +0:0/0 = 0 +0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/0/physics_layer_0/angular_velocity = 0.0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 15.2426, -32, -24.7454, 26.1805, 32, -32, 32) +0:0/0/physics_layer_0/polygon_0/one_way = true +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/1/physics_layer_0/angular_velocity = 0.0 +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(32, 15.2426, 32, -24.7454, -26.1805, 32, 32, 32) +0:0/1/physics_layer_0/polygon_0/one_way = true +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/2/physics_layer_0/angular_velocity = 0.0 +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -15.2426, -32, 24.7454, 26.1805, -32, -32, -32) +0:0/2/physics_layer_0/polygon_0/one_way = true +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/3/physics_layer_0/angular_velocity = 0.0 +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(32, -15.2426, 32, 24.7454, -26.1805, -32, 32, -32) +0:0/3/physics_layer_0/polygon_0/one_way = true +0:0/4 = 4 +0:0/4/transpose = true +0:0/4/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/4/physics_layer_0/angular_velocity = 0.0 +0:0/4/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 15.2426, -32, -24.7454, 26.1805, 32, -32, 32) +0:0/4/physics_layer_0/polygon_0/one_way = true +0:0/5 = 5 +0:0/5/flip_h = true +0:0/5/transpose = true +0:0/5/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/5/physics_layer_0/angular_velocity = 0.0 +0:0/5/physics_layer_0/polygon_0/points = PackedVector2Array(32, 15.2426, 32, -24.7454, -26.1805, 32, 32, 32) +0:0/5/physics_layer_0/polygon_0/one_way = true +0:0/6 = 6 +0:0/6/flip_v = true +0:0/6/transpose = true +0:0/6/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/6/physics_layer_0/angular_velocity = 0.0 +0:0/6/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -15.2426, -32, 24.7454, 26.1805, -32, -32, -32) +0:0/6/physics_layer_0/polygon_0/one_way = true +0:0/7 = 7 +0:0/7/flip_h = true +0:0/7/flip_v = true +0:0/7/transpose = true +0:0/7/physics_layer_0/linear_velocity = Vector2(0, 0) +0:0/7/physics_layer_0/angular_velocity = 0.0 +0:0/7/physics_layer_0/polygon_0/points = PackedVector2Array(32, -15.2426, 32, 24.7454, -26.1805, -32, 32, -32) +0:0/7/physics_layer_0/polygon_0/one_way = true + +[resource] +tile_size = Vector2i(64, 64) +physics_layer_0/collision_layer = 16 +sources/0 = SubResource("TileSetAtlasSource_86n7h") +sources/1 = SubResource("TileSetAtlasSource_6lnxi") +sources/2 = SubResource("TileSetAtlasSource_exupg") +sources/3 = SubResource("TileSetAtlasSource_vhpsr") +sources/4 = SubResource("TileSetAtlasSource_cyfft") +sources/5 = SubResource("TileSetAtlasSource_bhnsj") +sources/6 = SubResource("TileSetAtlasSource_xb6sn") +sources/7 = SubResource("TileSetAtlasSource_vh3ia") +sources/8 = SubResource("TileSetAtlasSource_rkc7e") +sources/9 = SubResource("TileSetAtlasSource_pxbka") +sources/10 = SubResource("TileSetAtlasSource_v64xb") +sources/11 = SubResource("TileSetAtlasSource_61wbh") +sources/12 = SubResource("TileSetAtlasSource_mnnpc") +sources/13 = SubResource("TileSetAtlasSource_vhvu4") +sources/14 = SubResource("TileSetAtlasSource_nfnit") +sources/15 = SubResource("TileSetAtlasSource_o2np1") +sources/16 = SubResource("TileSetAtlasSource_yr11e") +sources/17 = SubResource("TileSetAtlasSource_74kwm") +sources/18 = SubResource("TileSetAtlasSource_jxo3y") +sources/19 = SubResource("TileSetAtlasSource_70rax") diff --git a/2d/layered_tile_maps/platformer/music.ogg b/2d/layered_tile_maps/platformer/music.ogg new file mode 100644 index 0000000..ed3e9f0 Binary files /dev/null and b/2d/layered_tile_maps/platformer/music.ogg differ diff --git a/2d/layered_tile_maps/platformer/music.ogg.import b/2d/layered_tile_maps/platformer/music.ogg.import new file mode 100644 index 0000000..d2a49f6 --- /dev/null +++ b/2d/layered_tile_maps/platformer/music.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://dp0tta14mu7ux" +path="res://.godot/imported/music.ogg-3bd46d3a4b41702b152014078d12a390.oggvorbisstr" + +[deps] + +source_file="res://music.ogg" +dest_files=["res://.godot/imported/music.ogg-3bd46d3a4b41702b152014078d12a390.oggvorbisstr"] + +[params] + +loop=true +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/2d/layered_tile_maps/platformer/music.tscn b/2d/layered_tile_maps/platformer/music.tscn new file mode 100644 index 0000000..12c463d --- /dev/null +++ b/2d/layered_tile_maps/platformer/music.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=3 uid="uid://do7htx4sqmcnh"] + +[ext_resource type="AudioStream" uid="uid://dp0tta14mu7ux" path="res://music.ogg" id="1_8pjkj"] + +[node name="Music" type="AudioStreamPlayer"] +process_mode = 1 +stream = ExtResource("1_8pjkj") +volume_db = -3.0 +autoplay = true diff --git a/2d/layered_tile_maps/platformer/player/bullet.gd b/2d/layered_tile_maps/platformer/player/bullet.gd new file mode 100644 index 0000000..67ce6bf --- /dev/null +++ b/2d/layered_tile_maps/platformer/player/bullet.gd @@ -0,0 +1,13 @@ +class_name Bullet extends RigidBody2D + + +@onready var animation_player := $AnimationPlayer as AnimationPlayer + + +func destroy() -> void: + animation_player.play(&"destroy") + + +func _on_body_entered(body: Node) -> void: + if body is Enemy: + (body as Enemy).destroy() diff --git a/2d/layered_tile_maps/platformer/player/bullet.tscn b/2d/layered_tile_maps/platformer/player/bullet.tscn new file mode 100644 index 0000000..7ae882e --- /dev/null +++ b/2d/layered_tile_maps/platformer/player/bullet.tscn @@ -0,0 +1,138 @@ +[gd_scene load_steps=13 format=3 uid="uid://df7ddsoclivwe"] + +[ext_resource type="Texture2D" uid="uid://coj0d33vyyqx1" path="res://player/bullet.webp" id="1"] +[ext_resource type="Script" path="res://player/bullet.gd" id="2"] + +[sub_resource type="CanvasItemMaterial" id="1"] + +[sub_resource type="CanvasItemMaterial" id="2"] +blend_mode = 1 + +[sub_resource type="CanvasItemMaterial" id="3"] + +[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_ltbhv"] +blend_mode = 1 + +[sub_resource type="Gradient" id="Gradient_o13ul"] +interpolation_mode = 2 +colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_0sj74"] +gradient = SubResource("Gradient_o13ul") +fill = 1 +fill_from = Vector2(0.5, 0.5) +fill_to = Vector2(0.5, 0.01) + +[sub_resource type="CircleShape2D" id="4"] +radius = 8.0 + +[sub_resource type="Animation" id="Animation_v7668"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} + +[sub_resource type="Animation" id="5"] +resource_name = "destroy" +length = 0.3 +tracks/0/type = "method" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0.3), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"queue_free" +}] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("CPUParticles2D:self_modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.3), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Sprite2D:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.3), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_iv8gr"] +_data = { +"RESET": SubResource("Animation_v7668"), +"destroy": SubResource("5") +} + +[node name="Bullet" type="RigidBody2D"] +z_index = 5 +material = SubResource("1") +collision_layer = 0 +collision_mask = 26 +mass = 0.0283333 +gravity_scale = 0.1 +continuous_cd = 2 +max_contacts_reported = 1 +contact_monitor = true +script = ExtResource("2") + +[node name="CPUParticles2D" type="CPUParticles2D" parent="."] +self_modulate = Color(1, 1, 1, 0) +material = SubResource("2") +emitting = false +lifetime = 0.1 +speed_scale = 3.0 +texture = ExtResource("1") +spread = 0.0 +gravity = Vector2(0, 0) +color = Color(1, 1, 1, 0.705882) + +[node name="Sprite2D" type="Sprite2D" parent="."] +material = SubResource("3") +texture = ExtResource("1") + +[node name="Glow" type="Sprite2D" parent="Sprite2D"] +modulate = Color(0.501961, 1, 1, 0.25098) +material = SubResource("CanvasItemMaterial_ltbhv") +scale = Vector2(0.667, 0.667) +texture = SubResource("GradientTexture2D_0sj74") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("4") + +[node name="Timer" type="Timer" parent="."] +one_shot = true +autostart = true + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_iv8gr") +} + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] +[connection signal="timeout" from="Timer" to="." method="destroy"] diff --git a/2d/layered_tile_maps/platformer/player/bullet.webp b/2d/layered_tile_maps/platformer/player/bullet.webp new file mode 100644 index 0000000..8ed80a2 Binary files /dev/null and b/2d/layered_tile_maps/platformer/player/bullet.webp differ diff --git a/2d/layered_tile_maps/platformer/player/bullet.webp.import b/2d/layered_tile_maps/platformer/player/bullet.webp.import new file mode 100644 index 0000000..6e48e10 --- /dev/null +++ b/2d/layered_tile_maps/platformer/player/bullet.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://coj0d33vyyqx1" +path="res://.godot/imported/bullet.webp-afcd8f50a20e81f25285b6f580e633e3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://player/bullet.webp" +dest_files=["res://.godot/imported/bullet.webp-afcd8f50a20e81f25285b6f580e633e3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/player/coin_pickup.wav b/2d/layered_tile_maps/platformer/player/coin_pickup.wav new file mode 100644 index 0000000..e78579f Binary files /dev/null and b/2d/layered_tile_maps/platformer/player/coin_pickup.wav differ diff --git a/2d/layered_tile_maps/platformer/player/coin_pickup.wav.import b/2d/layered_tile_maps/platformer/player/coin_pickup.wav.import new file mode 100644 index 0000000..ce3ca63 --- /dev/null +++ b/2d/layered_tile_maps/platformer/player/coin_pickup.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://w4j7xs5uhoer" +path="res://.godot/imported/coin_pickup.wav-cc06e43e2f58c4fe505090708655bec0.sample" + +[deps] + +source_file="res://player/coin_pickup.wav" +dest_files=["res://.godot/imported/coin_pickup.wav-cc06e43e2f58c4fe505090708655bec0.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=true +edit/normalize=true +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/2d/layered_tile_maps/platformer/player/gun.gd b/2d/layered_tile_maps/platformer/player/gun.gd new file mode 100644 index 0000000..509d9d1 --- /dev/null +++ b/2d/layered_tile_maps/platformer/player/gun.gd @@ -0,0 +1,25 @@ +class_name Gun extends Marker2D +## Represents a weapon that spawns and shoots bullets. +## The Cooldown timer controls the cooldown duration between shots. + + +const BULLET_VELOCITY = 850.0 +const BULLET_SCENE = preload("res://player/bullet.tscn") + +@onready var sound_shoot := $Shoot as AudioStreamPlayer2D +@onready var timer := $Cooldown as Timer + + +# This method is only called by Player.gd. +func shoot(direction: float = 1.0) -> bool: + if not timer.is_stopped(): + return false + var bullet := BULLET_SCENE.instantiate() as Bullet + bullet.global_position = global_position + bullet.linear_velocity = Vector2(direction * BULLET_VELOCITY, 0.0) + + bullet.set_as_top_level(true) + add_child(bullet) + sound_shoot.play() + timer.start() + return true diff --git a/2d/layered_tile_maps/platformer/player/jump.wav b/2d/layered_tile_maps/platformer/player/jump.wav new file mode 100644 index 0000000..e9942e6 Binary files /dev/null and b/2d/layered_tile_maps/platformer/player/jump.wav differ diff --git a/2d/layered_tile_maps/platformer/player/jump.wav.import b/2d/layered_tile_maps/platformer/player/jump.wav.import new file mode 100644 index 0000000..fe70ec2 --- /dev/null +++ b/2d/layered_tile_maps/platformer/player/jump.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://sjod173axgwf" +path="res://.godot/imported/jump.wav-d94eb6ad27159bf77e7ba7ab65914fbd.sample" + +[deps] + +source_file="res://player/jump.wav" +dest_files=["res://.godot/imported/jump.wav-d94eb6ad27159bf77e7ba7ab65914fbd.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=true +edit/normalize=true +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/2d/layered_tile_maps/platformer/player/player.gd b/2d/layered_tile_maps/platformer/player/player.gd new file mode 100644 index 0000000..29f460e --- /dev/null +++ b/2d/layered_tile_maps/platformer/player/player.gd @@ -0,0 +1,88 @@ +class_name Player extends CharacterBody2D + + +signal coin_collected() + +const WALK_SPEED = 300.0 +const ACCELERATION_SPEED = WALK_SPEED * 6.0 +const JUMP_VELOCITY = -725.0 +## Maximum speed at which the player can fall. +const TERMINAL_VELOCITY = 700 + +## The player listens for input actions appended with this suffix.[br] +## Used to separate controls for multiple players in splitscreen. +@export var action_suffix := "" + +var gravity: int = ProjectSettings.get("physics/2d/default_gravity") +@onready var platform_detector := $PlatformDetector as RayCast2D +@onready var animation_player := $AnimationPlayer as AnimationPlayer +@onready var shoot_timer := $ShootAnimation as Timer +@onready var sprite := $Sprite2D as Sprite2D +@onready var jump_sound := $Jump as AudioStreamPlayer2D +@onready var gun = sprite.get_node(^"Gun") as Gun +@onready var camera := $Camera as Camera2D +var _double_jump_charged := false + + +func _physics_process(delta: float) -> void: + if is_on_floor(): + _double_jump_charged = true + if Input.is_action_just_pressed("jump" + action_suffix): + try_jump() + elif Input.is_action_just_released("jump" + action_suffix) and velocity.y < 0.0: + # The player let go of jump early, reduce vertical momentum. + velocity.y *= 0.6 + # Fall. + velocity.y = minf(TERMINAL_VELOCITY, velocity.y + gravity * delta) + + var direction := Input.get_axis("move_left" + action_suffix, "move_right" + action_suffix) * WALK_SPEED + velocity.x = move_toward(velocity.x, direction, ACCELERATION_SPEED * delta) + + if not is_zero_approx(velocity.x): + if velocity.x > 0.0: + sprite.scale.x = 1.0 + else: + sprite.scale.x = -1.0 + + floor_stop_on_slope = not platform_detector.is_colliding() + move_and_slide() + + var is_shooting := false + if Input.is_action_just_pressed("shoot" + action_suffix): + is_shooting = gun.shoot(sprite.scale.x) + + var animation := get_new_animation(is_shooting) + if animation != animation_player.current_animation and shoot_timer.is_stopped(): + if is_shooting: + shoot_timer.start() + animation_player.play(animation) + + +func get_new_animation(is_shooting := false) -> String: + var animation_new: String + if is_on_floor(): + if absf(velocity.x) > 0.1: + animation_new = "run" + else: + animation_new = "idle" + else: + if velocity.y > 0.0: + animation_new = "falling" + else: + animation_new = "jumping" + if is_shooting: + animation_new += "_weapon" + return animation_new + + +func try_jump() -> void: + if is_on_floor(): + jump_sound.pitch_scale = 1.0 + elif _double_jump_charged: + _double_jump_charged = false + velocity.x *= 2.5 + jump_sound.pitch_scale = 1.5 + else: + return + velocity.y = JUMP_VELOCITY + jump_sound.play() diff --git a/2d/layered_tile_maps/platformer/player/player.tscn b/2d/layered_tile_maps/platformer/player/player.tscn new file mode 100644 index 0000000..bc682a7 --- /dev/null +++ b/2d/layered_tile_maps/platformer/player/player.tscn @@ -0,0 +1,269 @@ +[gd_scene load_steps=18 format=3 uid="uid://vh7pmputa7r3"] + +[ext_resource type="Script" path="res://player/player.gd" id="3"] +[ext_resource type="AudioStream" uid="uid://sjod173axgwf" path="res://player/jump.wav" id="5"] +[ext_resource type="AudioStream" uid="uid://b01brytl75mwa" path="res://player/shoot.wav" id="6"] +[ext_resource type="Script" path="res://player/gun.gd" id="8"] +[ext_resource type="Texture2D" uid="uid://cc7o7t0ramd6y" path="res://player/robot.webp" id="9"] + +[sub_resource type="Animation" id="1"] +resource_name = "crouch" +length = 0.01 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [42] +} + +[sub_resource type="Animation" id="2"] +resource_name = "falling" +length = 0.01 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [48] +} + +[sub_resource type="Animation" id="3"] +resource_name = "falling_weapon" +length = 0.5 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [26] +} + +[sub_resource type="Animation" id="4"] +loop_mode = 1 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.25, 0.5, 0.75), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [30, 31, 32, 33] +} + +[sub_resource type="Animation" id="5"] +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.25, 0.5, 0.75), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [34, 35, 36, 37] +} + +[sub_resource type="Animation" id="6"] +length = 0.5 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [45] +} + +[sub_resource type="Animation" id="7"] +length = 0.5 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [46] +} + +[sub_resource type="Animation" id="8"] +length = 0.6 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.06003, 0.12006, 0.18009, 0.24012, 0.30015, 0.36018, 0.42021, 0.48024, 0.54027), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] +} + +[sub_resource type="Animation" id="9"] +length = 0.6 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.06, 0.12, 0.18, 0.24, 0.3, 0.36, 0.42, 0.48, 0.54), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [10, 11, 12, 13, 14, 15, 16, 17, 18, 19] +} + +[sub_resource type="Animation" id="10"] +length = 1.25 +loop_mode = 1 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.25, 0.75, 1), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [34, 35, 36, 37] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_jnr5f"] +_data = { +"crouch": SubResource("1"), +"falling": SubResource("2"), +"falling_weapon": SubResource("3"), +"idle": SubResource("4"), +"idle_weapon": SubResource("5"), +"jumping": SubResource("6"), +"jumping_weapon": SubResource("7"), +"run": SubResource("8"), +"run_weapon": SubResource("9"), +"standing_weapon_ready": SubResource("10") +} + +[sub_resource type="RectangleShape2D" id="11"] +size = Vector2(42.5, 54.5) + +[node name="Player" type="CharacterBody2D"] +scale = Vector2(0.8, 0.8) +collision_mask = 30 +floor_constant_speed = true +platform_on_leave = 2 +script = ExtResource("3") + +[node name="ShootAnimation" type="Timer" parent="."] +wait_time = 0.2 +one_shot = true + +[node name="PlatformDetector" type="RayCast2D" parent="."] +target_position = Vector2(0, 6) +collision_mask = 8 + +[node name="Sprite2D" type="Sprite2D" parent="."] +position = Vector2(0, -14) +texture = ExtResource("9") +hframes = 8 +vframes = 8 + +[node name="Gun" type="Marker2D" parent="Sprite2D"] +position = Vector2(14, 1) +script = ExtResource("8") + +[node name="Shoot" type="AudioStreamPlayer2D" parent="Sprite2D/Gun"] +position = Vector2(-30.6589, -6.13176) +stream = ExtResource("6") + +[node name="Cooldown" type="Timer" parent="Sprite2D/Gun"] +wait_time = 0.3 +one_shot = true + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_jnr5f") +} + +[node name="Camera" type="Camera2D" parent="."] +position = Vector2(0, -28) +offset = Vector2(0, 50) +limit_left = -715 +limit_top = -250 +limit_right = 1425 +limit_bottom = 690 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2(0, -14) +shape = SubResource("11") + +[node name="Jump" type="AudioStreamPlayer2D" parent="."] +stream = ExtResource("5") +volume_db = -3.0 + +[node name="UI" type="CanvasLayer" parent="."] +layer = 0 + +[node name="Left" type="TouchScreenButton" parent="UI"] +position = Vector2(157, 813) +scale = Vector2(2, 2) +passby_press = true +action = "move_left" +visibility_mode = 1 + +[node name="Right" type="TouchScreenButton" parent="UI"] +position = Vector2(425, 813) +scale = Vector2(2, 2) +passby_press = true +action = "move_right" +visibility_mode = 1 + +[node name="Jump" type="TouchScreenButton" parent="UI"] +position = Vector2(1871, 813) +scale = Vector2(2, 2) +action = "jump" +visibility_mode = 1 + +[node name="Fire" type="TouchScreenButton" parent="UI"] +position = Vector2(1870, 564) +scale = Vector2(2, 2) +action = "shoot" +visibility_mode = 1 diff --git a/2d/layered_tile_maps/platformer/player/robot.webp b/2d/layered_tile_maps/platformer/player/robot.webp new file mode 100644 index 0000000..cc1b4f7 Binary files /dev/null and b/2d/layered_tile_maps/platformer/player/robot.webp differ diff --git a/2d/layered_tile_maps/platformer/player/robot.webp.import b/2d/layered_tile_maps/platformer/player/robot.webp.import new file mode 100644 index 0000000..dd5a19b --- /dev/null +++ b/2d/layered_tile_maps/platformer/player/robot.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cc7o7t0ramd6y" +path="res://.godot/imported/robot.webp-39f680d53df0b170662860aae7393568.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://player/robot.webp" +dest_files=["res://.godot/imported/robot.webp-39f680d53df0b170662860aae7393568.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/2d/layered_tile_maps/platformer/player/shoot.wav b/2d/layered_tile_maps/platformer/player/shoot.wav new file mode 100644 index 0000000..ad74f32 Binary files /dev/null and b/2d/layered_tile_maps/platformer/player/shoot.wav differ diff --git a/2d/layered_tile_maps/platformer/player/shoot.wav.import b/2d/layered_tile_maps/platformer/player/shoot.wav.import new file mode 100644 index 0000000..3d53056 --- /dev/null +++ b/2d/layered_tile_maps/platformer/player/shoot.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://b01brytl75mwa" +path="res://.godot/imported/shoot.wav-c76164c7ce3589c9fdcbf989e9819ed2.sample" + +[deps] + +source_file="res://player/shoot.wav" +dest_files=["res://.godot/imported/shoot.wav-c76164c7ce3589c9fdcbf989e9819ed2.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=true +edit/normalize=true +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/2d/layered_tile_maps/platformer/project.godot b/2d/layered_tile_maps/platformer/project.godot new file mode 100644 index 0000000..299f2a9 --- /dev/null +++ b/2d/layered_tile_maps/platformer/project.godot @@ -0,0 +1,220 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="Platformer 2D" +config/description="This demo is a pixel art 2D platformer with graphics and sound. + +It shows you how to code characters and physics-based objects +in a real game context. This is a relatively complete demo +where the player can jump, walk on slopes, fire bullets, +interact with enemies, and more. It contains one closed +level, and the player is invincible, unlike the enemies." +config/tags=PackedStringArray("2d", "demo", "official", "physics", "tilemap") +run/main_scene="res://game_singleplayer.tscn" +config/features=PackedStringArray("4.2") +config/icon="res://icon.webp" + +[autoload] + +Music="*res://music.tscn" + +[debug] + +gdscript/completion/autocomplete_setters_and_getters=true + +[display] + +window/size/viewport_width=800 +window/size/viewport_height=480 +window/size/window_width_override=1600 +window/size/window_height_override=960 +window/stretch/mode="canvas_items" +window/stretch/aspect="keep_height" +window/stretch/scale_mode="integer" +stretch/aspect="keep_height" +stretch/mode="2d" + +[gdnative] + +singletons=[] + +[image_loader] + +repeat=false + +[importer_defaults] + +texture={ +"compress/bptc_ldr": 0, +"compress/hdr_mode": 0, +"compress/lossy_quality": 0.7, +"compress/mode": 0, +"compress/normal_map": 0, +"detect_3d": false, +"flags/anisotropic": false, +"flags/filter": false, +"flags/mipmaps": false, +"flags/repeat": 0, +"flags/srgb": 2, +"process/HDR_as_SRGB": false, +"process/fix_alpha_border": true, +"process/invert_color": false, +"process/premult_alpha": false, +"size_limit": 0, +"stream": false, +"svg/scale": 1.0 +} + +[input] + +jump={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194320,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} +move_left={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194319,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null) +] +} +move_right={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194321,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null) +] +} +shoot={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":2,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":90,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"double_click":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194438,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194326,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} +toggle_fullscreen={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194342,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":true,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194309,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} +toggle_pause={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194305,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null) +] +} +jump_p1={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null) +] +} +move_left_p1={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null) +] +} +move_right_p1={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null) +] +} +shoot_p1={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":90,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":2,"pressure":0.0,"pressed":false,"script":null) +] +} +jump_p2={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194320,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":1,"button_index":0,"pressure":0.0,"pressed":false,"script":null) +] +} +move_left_p2={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194319,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":1,"button_index":14,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":1,"axis":0,"axis_value":-1.0,"script":null) +] +} +move_right_p2={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194321,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":1,"button_index":15,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":1,"axis":0,"axis_value":1.0,"script":null) +] +} +shoot_p2={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194438,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194326,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":1,"button_index":2,"pressure":0.0,"pressed":false,"script":null) +] +} +splitscreen={ +"deadzone": 0.5, +"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":10,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194306,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} + +[layer_names] + +2d_physics/layer_1="player" +2d_physics/layer_2="enemies" +2d_physics/layer_3="coins" +2d_physics/layer_4="platforms" +2d_physics/layer_5="ground" + +[physics] + +common/physics_ticks_per_second=120 +2d/default_gravity=2100 + +[rasterizer] + +use_pixel_snap=true + +[render] + +mipmap_policy=1 + +[rendering] + +textures/canvas_textures/default_texture_filter=0 +quality/driver/driver_name="GLES2" +quality/intended_usage/framebuffer_allocation=0 +quality/intended_usage/framebuffer_allocation.mobile=1 +vram_compression/import_etc=true +quality/filters/anisotropic_filter_level=2 +quality/filters/use_nearest_mipmap_filter=true +quality/depth/hdr=false +quality/2d/use_pixel_snap=true + +[texture_import] + +filter=false diff --git a/2d/layered_tile_maps/platformer/screenshots/.gdignore b/2d/layered_tile_maps/platformer/screenshots/.gdignore new file mode 100644 index 0000000..e69de29 diff --git a/2d/layered_tile_maps/platformer/screenshots/platformer.webp b/2d/layered_tile_maps/platformer/screenshots/platformer.webp new file mode 100644 index 0000000..ca8d7c6 Binary files /dev/null and b/2d/layered_tile_maps/platformer/screenshots/platformer.webp differ