diff --git a/project.godot b/project.godot index 4fd739a..0368fc8 100644 --- a/project.godot +++ b/project.godot @@ -15,6 +15,10 @@ run/main_scene="uid://cy1i6ucex6m0d" config/features=PackedStringArray("4.5", "Forward Plus") config/icon="res://icon.svg" +[autoload] + +Gamecontroller="*res://scripts/gamecontroller.gd" + [display] window/size/viewport_width=320 diff --git a/scenes/bullet.tscn b/scenes/bullet.tscn index 55b890f..e804d0f 100644 --- a/scenes/bullet.tscn +++ b/scenes/bullet.tscn @@ -4,13 +4,14 @@ [ext_resource type="Texture2D" uid="uid://bc8cpuacrbf0y" path="res://assets/graphics/projectiles/pixel_bullet.png" id="2_y25gk"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_h1aey"] -size = Vector2(4, 2) +size = Vector2(4, 6.3999996) [node name="Bullet" type="Area2D"] scale = Vector2(34.677, 20) script = ExtResource("1_mkf8s") [node name="CollisionShape2D" type="CollisionShape2D" parent="."] +scale = Vector2(0.99999994, 0.99999994) shape = SubResource("RectangleShape2D_h1aey") debug_color = Color(0.78294253, 0.1467745, 0.21462014, 0.41960785) @@ -19,3 +20,5 @@ texture_filter = 1 position = Vector2(-1.8553616, -1.0851669) scale = Vector2(-0.048501078, -0.040855687) texture = ExtResource("2_y25gk") + +[connection signal="area_entered" from="." to="." method="_on_area_entered"] diff --git a/scenes/game.tscn b/scenes/game.tscn index 85fc684..59bc475 100644 --- a/scenes/game.tscn +++ b/scenes/game.tscn @@ -1,6 +1,5 @@ -[gd_scene load_steps=22 format=4 uid="uid://cy1i6ucex6m0d"] +[gd_scene load_steps=21 format=4 uid="uid://cy1i6ucex6m0d"] -[ext_resource type="Script" uid="uid://c546prectbgc7" path="res://scripts/gamecontroller.gd" id="1_lbhrr"] [ext_resource type="PackedScene" uid="uid://qv8blu8wkqvq" path="res://scenes/crate.tscn" id="1_uwrxv"] [ext_resource type="Script" uid="uid://barmq4qhp5cvl" path="res://scripts/scene_manager.gd" id="2_p57ef"] [ext_resource type="Texture2D" uid="uid://cy2xlq65lg2b" path="res://assets/graphics/env/terrain/Terrain (32x32).png" id="2_u5sy4"] @@ -281,7 +280,6 @@ pattern_1 = SubResource("TileMapPattern_u5sy4") [node name="Game" type="Node2D"] position = Vector2(6, 2) -script = ExtResource("1_lbhrr") [node name="sky" type="Parallax2D" parent="."] repeat_size = Vector2(320, 160) @@ -300,7 +298,7 @@ texture = ExtResource("3_kvpfn") [node name="Sprite2D" type="Sprite2D" parent="."] texture_filter = 1 -position = Vector2(-434.00003, 542) +position = Vector2(-174.00003, 101) scale = Vector2(3.5, 3.5625) texture = ExtResource("5_kvpfn") @@ -373,12 +371,6 @@ text = "0000" [node name="Coin" parent="Coins" instance=ExtResource("12_dinhu")] position = Vector2(-34, 284) -[node name="Coin3" parent="Coins" instance=ExtResource("12_dinhu")] -position = Vector2(-245, 201) - -[node name="Coin4" parent="Coins" instance=ExtResource("12_dinhu")] -position = Vector2(-107, 321) - [node name="Enemies" type="Node2D" parent="."] [node name="Slime" parent="Enemies" instance=ExtResource("13_kvuet")] diff --git a/scenes/grenade.tscn b/scenes/grenade.tscn index 601607d..1d1530a 100644 --- a/scenes/grenade.tscn +++ b/scenes/grenade.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=3 format=3 uid="uid://b5n0lwes8qpu5"] +[gd_scene load_steps=4 format=3 uid="uid://b5n0lwes8qpu5"] [ext_resource type="Script" uid="uid://c3sd8uvxer0wk" path="res://scripts/grenade.gd" id="1_cvyik"] +[ext_resource type="Texture2D" uid="uid://2bw0cvxvqmor" path="res://icon.svg" id="2_wxtds"] [sub_resource type="CircleShape2D" id="CircleShape2D_1xt3t"] @@ -13,4 +14,8 @@ script = ExtResource("1_cvyik") shape = SubResource("CircleShape2D_1xt3t") debug_color = Color(0.7058824, 0.49411765, 0.18431373, 0.5921569) +[node name="Sprite2D" type="Sprite2D" parent="."] +scale = Vector2(0.2, 0.2) +texture = ExtResource("2_wxtds") + [connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/scenes/level2.tscn b/scenes/level2.tscn new file mode 100644 index 0000000..8245130 --- /dev/null +++ b/scenes/level2.tscn @@ -0,0 +1,386 @@ +[gd_scene load_steps=21 format=4 uid="uid://2fncglq8po8r"] + +[ext_resource type="Texture2D" uid="uid://cou2dhnt8x8d7" path="res://assets/graphics/env/sky.png" id="1_8g4ke"] +[ext_resource type="Texture2D" uid="uid://yns5hjgu5net" path="res://assets/graphics/env/background.png" id="2_56gwk"] +[ext_resource type="Texture2D" uid="uid://ds2j76cg1r8y2" path="res://assets/graphics/objects/plane.png" id="3_ve5ok"] +[ext_resource type="Texture2D" uid="uid://cy2xlq65lg2b" path="res://assets/graphics/env/terrain/Terrain (32x32).png" id="4_cleqw"] +[ext_resource type="Texture2D" uid="uid://na61n1gqy7r5" path="res://assets/graphics/env/terrain/veg_32x32(1).png" id="5_wvb8j"] +[ext_resource type="Texture2D" uid="uid://dqgc7aef0pm78" path="res://assets/graphics/env/terrain/mushroom_32x64(1).png" id="6_g8vcy"] +[ext_resource type="Script" uid="uid://barmq4qhp5cvl" path="res://scripts/scene_manager.gd" id="7_cqal4"] +[ext_resource type="PackedScene" uid="uid://qv8blu8wkqvq" path="res://scenes/crate.tscn" id="8_o3sye"] +[ext_resource type="PackedScene" uid="uid://dmrrbiwqptrho" path="res://scenes/trigger.tscn" id="9_24ks5"] +[ext_resource type="PackedScene" uid="uid://b1yy0sybg66hh" path="res://scenes/player.tscn" id="10_s4es8"] +[ext_resource type="PackedScene" uid="uid://dxocmoeuu32ex" path="res://scenes/coin.tscn" id="11_63e4f"] +[ext_resource type="PackedScene" uid="uid://ccx1uakpj5143" path="res://scenes/slime.tscn" id="12_y6lc1"] + +[sub_resource type="TileMapPattern" id="TileMapPattern_p57ef"] +tile_data = PackedInt32Array(0, 0, 4, 1, 65536, 4, 2, 65536, 4, 3, 65536, 4, 4, 131072, 4) + +[sub_resource type="TileMapPattern" id="TileMapPattern_u5sy4"] +tile_data = PackedInt32Array(0, 0, 4, 1, 65536, 4, 2, 65536, 4, 3, 65536, 4, 4, 131072, 4) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_gee14"] +texture = ExtResource("4_cleqw") +texture_region_size = Vector2i(32, 32) +0:0/0 = 0 +0:0/0/terrain_set = 0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:0/0/terrains_peering_bit/bottom_right_corner = 0 +0:0/0/terrains_peering_bit/bottom_side = 0 +1:0/0 = 0 +1:0/0/terrain_set = 0 +1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +1:0/0/terrains_peering_bit/bottom_right_corner = 0 +1:0/0/terrains_peering_bit/bottom_side = 0 +1:0/0/terrains_peering_bit/bottom_left_corner = 0 +2:0/0 = 0 +2:0/0/terrain_set = 0 +2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +2:0/0/terrains_peering_bit/bottom_side = 0 +2:0/0/terrains_peering_bit/bottom_left_corner = 0 +4:0/0 = 0 +4:0/0/terrain_set = 0 +4:0/0/terrain = 0 +4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +4:0/0/terrains_peering_bit/bottom_side = 0 +6:0/0 = 0 +6:0/0/terrain_set = 0 +6:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(3.8235703, 1.5931549, 16, 1.5931549, 16, 16, 4.1422005, 16) +6:0/0/terrains_peering_bit/bottom_left_corner = 0 +6:0/0/terrains_peering_bit/left_side = 0 +6:0/0/terrains_peering_bit/top_left_corner = 0 +6:0/0/terrains_peering_bit/top_side = 0 +6:0/0/terrains_peering_bit/top_right_corner = 0 +7:0/0 = 0 +7:0/0/terrain_set = 0 +7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -1.9117832, 16, -1.593153, 1.2745247, -16, 0.95589066) +7:0/0/terrains_peering_bit/right_side = 0 +7:0/0/terrains_peering_bit/bottom_right_corner = 0 +7:0/0/terrains_peering_bit/top_left_corner = 0 +7:0/0/terrains_peering_bit/top_side = 0 +7:0/0/terrains_peering_bit/top_right_corner = 0 +9:0/0 = 0 +9:0/0/terrain_set = 0 +9:0/0/terrain = 0 +9:0/0/terrains_peering_bit/bottom_right_corner = 0 +9:0/0/terrains_peering_bit/bottom_side = 0 +9:0/0/terrains_peering_bit/bottom_left_corner = 0 +9:0/0/terrains_peering_bit/top_side = 0 +10:0/0 = 0 +10:0/0/terrain_set = 0 +10:0/0/terrain = 0 +10:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(2.2304153, -16, 16, -16, 16, 16, 1.9117851, 16) +10:0/0/terrains_peering_bit/bottom_side = 0 +10:0/0/terrains_peering_bit/bottom_left_corner = 0 +10:0/0/terrains_peering_bit/left_side = 0 +10:0/0/terrains_peering_bit/top_left_corner = 0 +10:0/0/terrains_peering_bit/top_side = 0 +12:0/0 = 0 +12:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 0.95589066, -16, 0.95589066) +13:0/0 = 0 +13:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 0.95589066, -16, 0.95589066) +15:0/0 = 0 +15:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:1/0 = 0 +0:1/0/terrain_set = 0 +0:1/0/terrain = 0 +0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:1/0/terrains_peering_bit/right_side = 0 +0:1/0/terrains_peering_bit/bottom_right_corner = 0 +0:1/0/terrains_peering_bit/bottom_side = 0 +0:1/0/terrains_peering_bit/top_side = 0 +0:1/0/terrains_peering_bit/top_right_corner = 0 +1:1/0 = 0 +1:1/0/terrain_set = 0 +1:1/0/terrain = 0 +1:1/0/terrains_peering_bit/right_side = 0 +1:1/0/terrains_peering_bit/bottom_right_corner = 0 +1:1/0/terrains_peering_bit/bottom_side = 0 +1:1/0/terrains_peering_bit/bottom_left_corner = 0 +1:1/0/terrains_peering_bit/left_side = 0 +1:1/0/terrains_peering_bit/top_left_corner = 0 +1:1/0/terrains_peering_bit/top_side = 0 +1:1/0/terrains_peering_bit/top_right_corner = 0 +2:1/0 = 0 +2:1/0/terrain_set = 0 +2:1/0/terrain = 0 +2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +2:1/0/terrains_peering_bit/bottom_side = 0 +2:1/0/terrains_peering_bit/bottom_left_corner = 0 +2:1/0/terrains_peering_bit/left_side = 0 +2:1/0/terrains_peering_bit/top_left_corner = 0 +2:1/0/terrains_peering_bit/top_side = 0 +4:1/0 = 0 +4:1/0/terrain_set = 0 +4:1/0/terrain = 0 +4:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +4:1/0/terrains_peering_bit/bottom_side = 0 +4:1/0/terrains_peering_bit/top_side = 0 +6:1/0 = 0 +6:1/0/terrain_set = 0 +6:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(3.8235703, 1.5931549, 16, 1.5931549, 16, -16, 4.1422005, -16) +6:1/0/terrains_peering_bit/bottom_right_corner = 0 +6:1/0/terrains_peering_bit/bottom_side = 0 +6:1/0/terrains_peering_bit/bottom_left_corner = 0 +6:1/0/terrains_peering_bit/left_side = 0 +6:1/0/terrains_peering_bit/top_left_corner = 0 +7:1/0 = 0 +7:1/0/terrain_set = 0 +7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -1.593153, -16, -1.593153, 1.2745247, -16, 0.95589066) +7:1/0/terrains_peering_bit/right_side = 0 +7:1/0/terrains_peering_bit/bottom_right_corner = 0 +7:1/0/terrains_peering_bit/bottom_side = 0 +7:1/0/terrains_peering_bit/bottom_left_corner = 0 +7:1/0/terrains_peering_bit/top_right_corner = 0 +9:1/0 = 0 +9:1/0/terrain_set = 0 +9:1/0/terrain = 0 +9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -4.1421986, -16, -4.1421986, 16, -16, 16) +9:1/0/terrains_peering_bit/right_side = 0 +9:1/0/terrains_peering_bit/bottom_right_corner = 0 +9:1/0/terrains_peering_bit/bottom_side = 0 +9:1/0/terrains_peering_bit/top_side = 0 +9:1/0/terrains_peering_bit/top_right_corner = 0 +10:1/0 = 0 +10:1/0/terrain_set = 0 +10:1/0/terrain = 0 +10:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 1.2745247, 16, 1.2745247, 16, 16, -16, 16) +10:1/0/terrains_peering_bit/right_side = 0 +10:1/0/terrains_peering_bit/bottom_side = 0 +10:1/0/terrains_peering_bit/left_side = 0 +10:1/0/terrains_peering_bit/top_left_corner = 0 +10:1/0/terrains_peering_bit/top_side = 0 +10:1/0/terrains_peering_bit/top_right_corner = 0 +12:1/0 = 0 +12:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 1.2745247, 16, 1.2745247, 16, 16, -16, 16) +13:1/0 = 0 +13:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 1.2745247, 16, 1.2745247, 16, 16, -16, 16) +15:1/0 = 0 +16:1/0 = 0 +0:2/0 = 0 +0:2/0/terrain_set = 0 +0:2/0/terrain = 0 +0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:2/0/terrains_peering_bit/right_side = 0 +0:2/0/terrains_peering_bit/top_side = 0 +0:2/0/terrains_peering_bit/top_right_corner = 0 +1:2/0 = 0 +1:2/0/terrain_set = 0 +1:2/0/terrain = 0 +1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +1:2/0/terrains_peering_bit/right_side = 0 +1:2/0/terrains_peering_bit/left_side = 0 +1:2/0/terrains_peering_bit/top_left_corner = 0 +1:2/0/terrains_peering_bit/top_side = 0 +1:2/0/terrains_peering_bit/top_right_corner = 0 +2:2/0 = 0 +2:2/0/terrain_set = 0 +2:2/0/terrain = 0 +2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +2:2/0/terrains_peering_bit/left_side = 0 +2:2/0/terrains_peering_bit/top_left_corner = 0 +2:2/0/terrains_peering_bit/top_side = 0 +4:2/0 = 0 +4:2/0/terrain_set = 0 +4:2/0/terrain = 0 +4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +4:2/0/terrains_peering_bit/top_side = 0 +6:3/0 = 0 +6:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -6.0539837, -16, -5.7353516, 16, -16, 16) +7:3/0 = 0 +7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(4.779461, 16, 16, 16, 16, -16, 4.1422005, -16) +9:3/0 = 0 +9:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 0.95589066, -16, 0.95589066) +10:3/0 = 0 +10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 0.95589066, -16, 0.95589066) +12:3/0 = 0 +12:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +13:3/0 = 0 +13:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +15:3/0 = 0 +15:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +16:3/0 = 0 +16:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:4/0 = 0 +0:4/0/terrain_set = 0 +0:4/0/terrain = 0 +0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:4/0/terrains_peering_bit/right_side = 0 +1:4/0 = 0 +1:4/0/terrain_set = 0 +1:4/0/terrain = 0 +1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +1:4/0/terrains_peering_bit/right_side = 0 +1:4/0/terrains_peering_bit/left_side = 0 +2:4/0 = 0 +2:4/0/terrain_set = 0 +2:4/0/terrain = 0 +2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +2:4/0/terrains_peering_bit/left_side = 0 +4:4/0 = 0 +4:4/0/terrain_set = 0 +4:4/0/terrain = 0 +4:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +6:4/0 = 0 +6:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -6.0539837, -16, -5.7353516, 16, -16, 16) +7:4/0 = 0 +7:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(4.779461, 16, 16, 16, 16, -16, 4.1422005, -16) +9:4/0 = 0 +9:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 1.2745247, 16, 1.2745247, 16, 16, -16, 16) +10:4/0 = 0 +10:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 1.2745247, 16, 1.2745247, 16, 16, -16, 16) +12:4/0 = 0 +12:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +13:4/0 = 0 +13:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +15:4/0 = 0 +15:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +16:4/0 = 0 +16:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +4:3/0 = 0 +3:3/0 = 0 +3:2/0 = 0 +3:1/0 = 0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_dinhu"] +texture = ExtResource("5_wvb8j") +texture_region_size = Vector2i(32, 32) +0:0/0 = 0 +0:0/0/terrain_set = 0 +0:0/0/terrain = 1 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_kvuet"] +texture = ExtResource("6_g8vcy") +texture_region_size = Vector2i(32, 32) +0:0/0 = 0 +0:0/0/terrain_set = 0 +0:0/0/terrains_peering_bit/bottom_side = 1 +0:1/0 = 0 +0:1/0/terrain_set = 0 +0:1/0/terrain = 1 +0:1/0/terrains_peering_bit/top_side = 1 + +[sub_resource type="TileSet" id="TileSet_0tnpc"] +tile_size = Vector2i(32, 32) +physics_layer_0/collision_layer = 1 +terrain_set_0/mode = 0 +terrain_set_0/terrain_0/name = "LeafyDirt" +terrain_set_0/terrain_0/color = Color(0.5, 0.34375, 0.25, 1) +terrain_set_0/terrain_1/name = "Veg" +terrain_set_0/terrain_1/color = Color(0.5, 0.4375, 0.25, 1) +sources/0 = SubResource("TileSetAtlasSource_gee14") +sources/1 = SubResource("TileSetAtlasSource_dinhu") +sources/2 = SubResource("TileSetAtlasSource_kvuet") +pattern_0 = SubResource("TileMapPattern_p57ef") +pattern_1 = SubResource("TileMapPattern_u5sy4") + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_8cj0n"] + +[sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_8cj0n"] + +[node name="Game" type="Node2D"] +position = Vector2(6, 2) + +[node name="sky" type="Parallax2D" parent="."] +repeat_size = Vector2(320, 160) + +[node name="Sprite2D" type="Sprite2D" parent="sky"] +position = Vector2(154, 88) +texture = ExtResource("1_8g4ke") + +[node name="trees" type="Parallax2D" parent="."] +scroll_scale = Vector2(0.5, 1) +repeat_size = Vector2(300, 0) + +[node name="Sprite2D" type="Sprite2D" parent="trees"] +position = Vector2(154, 504) +texture = ExtResource("2_56gwk") + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture_filter = 1 +position = Vector2(52.00003, 77.00001) +scale = Vector2(3.5, 3.5625) +texture = ExtResource("3_ve5ok") + +[node name="TileMapLayer" type="TileMapLayer" parent="."] +texture_filter = 1 +tile_map_data = PackedByteArray("AAADAAcAAAAEAAQAAAAEAAcAAAAEAAQAAAACAAcAAAAEAAQAAAABAAwAAAABAAQAAAACAAwAAAABAAQAAAADAAwAAAABAAQAAAAEAAwAAAABAAQAAAD9/wwAAAABAAQAAAD+/wwAAAABAAQAAAD//wwAAAACAAQAAAD//w0AAAACAAQAAAD+/w0AAAAAAAQAAAD0/wwAAAACAAQAAAD1/wsAAAAAAAIAAAD2/wsAAAABAAIAAAD3/wwAAAAAAAIAAAD3/wsAAAAKAAEAAAD4/wwAAAAKAAEAAAD4/wsAAAABAAEAAAD5/wwAAAABAAEAAAD5/wsAAAABAAEAAAD5/woAAAABAAEAAAD5/wkAAAABAAEAAAD4/wkAAAABAAEAAAD4/wgAAAABAAAAAAD5/wgAAAABAAAAAAD3/wkAAAABAAEAAAD3/wgAAAACAAEAAAD2/wkAAAAKAAEAAAD2/wgAAAABAAEAAAD1/wkAAAAKAAEAAAD1/wgAAAAJAAEAAAD1/woAAAAKAAEAAAD0/woAAAAAAAIAAAD0/wkAAAAKAAEAAAD2/woAAAABAAEAAAD4/woAAAABAAEAAAD2/wcAAAABAAAAAAD3/wcAAAACAAAAAAD1/wcAAAAAAAAAAAD0/wgAAAAGAAEAAAD3/woAAAABAAEAAAD1/w4AAAABAAEAAAD2/w4AAAACAAEAAAD5/w4AAAAAAAIAAAD4/w8AAAACAAQAAAD3/w8AAAAKAAAAAAD2/w8AAAABAAEAAAD1/w8AAAAJAAEAAAD6/w8AAAAAAAIAAAD6/w4AAAAKAAEAAAD3/xAAAAABAAEAAAD2/xAAAAABAAEAAAD2/xEAAAAAAAIAAAD3/xEAAAABAAIAAAD4/xEAAAABAAIAAAD5/xEAAAACAAIAAAD6/xEAAAAEAAAAAAD5/w0AAAAKAAEAAAD6/w0AAAAKAAAAAAD5/xAAAAAEAAAAAAD4/xAAAAACAAEAAAD4/w0AAAAAAAIAAAD7/w4AAAABAAEAAAD7/w8AAAABAAIAAAD7/w0AAAAHAAEAAAD8/w8AAAACAAIAAAD1/w0AAAAKAAAAAAD0/w4AAAABAAIAAAD0/w0AAAABAAEAAADz/w0AAAAAAAEAAADz/w4AAAAAAAIAAADz/wwAAAACAAAAAAD6/wsAAAAKAAAAAAD6/wwAAAAKAAAAAAD6/wkAAAACAAEAAAD6/woAAAACAAEAAAD6/wgAAAACAAAAAAD7/wwAAAABAAQAAAD8/wwAAAAKAAEAAAD8/w0AAAAKAAAAAAD8/w4AAAAKAAAAAADz/wkAAAAAAAIAAADy/wgAAAAAAAIAAADx/wcAAAAAAAIAAADy/wcAAAAKAAEAAADx/wYAAAAAAAAAAADy/wYAAAACAAAAAADz/wgAAAAKAAEAAADz/wcAAAAGAAEAAAD8/xIAAAACAAQAAAD7/xIAAAACAAIAAAD6/xIAAAABAAIAAAD5/xIAAAAAAAQAAAD7/xEAAAACAAAAAAD0/xAAAAAAAAQAAAD1/xAAAAAAAAIAAADz/w8AAAAEAAIAAADy/w8AAAAAAAQAAADx/w4AAAACAAQAAADw/w4AAAAAAAQAAADv/w0AAAAEAAIAAADv/wwAAAAEAAAAAADu/wwAAAAAAAQAAAD//woAAAAAAAQAAAAAAAoAAAABAAQAAAABAAoAAAABAAQAAAACAAoAAAABAAQAAAADAAoAAAACAAQAAAD8/xEAAgAAAAEAAAD8/xAAAgAAAAAAAADw/w0AAgAAAAEAAADw/wwAAgAAAAAAAAD+/wsAAQAAAAAAAAADAAsAAQAAAAAAAAD8/wsAAgAAAAEAAAD8/woAAgAAAAAAAAD5/wcAAQAAAAAAAAD1/wYAAQAAAAAAAAD2/wYAAgAAAAEAAAD2/wUAAgAAAAAAAAAFABEAAAAEAAEAAAAFABAAAAAEAAAAAAAGABAAAAACAAQAAAAGAA8AAAAEAAEAAAAGAA4AAAAEAAAAAAAHAA4AAAABAAQAAAAIAA4AAAACAAEAAAAIAA8AAAAEAAIAAAAIAA0AAAAEAAAAAAAJAA0AAAACAAQAAAAJAAwAAAAEAAEAAAAJAAsAAAAEAAAAAAAKAAsAAAABAAQAAAALAAsAAAACAAQAAAALAAoAAAAAAAQAAAAMAAoAAAABAAQAAAANAAoAAAACAAQAAAAFABIAAAAEAAIAAAAEABIAAAABAAQAAAADABIAAAAAAAQAAAA=") +tile_set = SubResource("TileSet_0tnpc") + +[node name="SceneManager" type="Node2D" parent="."] +unique_name_in_owner = true +script = ExtResource("7_cqal4") + +[node name="StaticBody2D" type="StaticBody2D" parent="."] +position = Vector2(120, 233) +scale = Vector2(3.2000012, 1) +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] +shape = SubResource("RectangleShape2D_8cj0n") + +[node name="StaticBody2D2" type="StaticBody2D" parent="."] +position = Vector2(229.00002, 261) +rotation = -0.43738624 +scale = Vector2(3.2000012, 1) +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D2"] +shape = SubResource("RectangleShape2D_8cj0n") + +[node name="StaticBody2D3" type="StaticBody2D" parent="."] +position = Vector2(321.00003, 198.00003) +rotation = 0.59605384 +scale = Vector2(3.2000012, 1) +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D3"] +shape = SubResource("RectangleShape2D_8cj0n") + +[node name="Crate" parent="." groups=["explodable", "pushable"] instance=ExtResource("8_o3sye")] +position = Vector2(114, 175) + +[node name="Crate2" parent="." groups=["explodable", "pushable"] instance=ExtResource("8_o3sye")] +position = Vector2(155.00002, 199) +rotation = 0.8783198 + +[node name="Boundary" type="StaticBody2D" parent="."] +position = Vector2(142, 591) +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Boundary"] +shape = SubResource("WorldBoundaryShape2D_8cj0n") + +[node name="Trigger" parent="." instance=ExtResource("9_24ks5")] +position = Vector2(201, 376) + +[node name="Trigger2" parent="." instance=ExtResource("9_24ks5")] +position = Vector2(62.000015, 278) +intent = "powerup" + +[node name="CharacterBody2D" parent="." instance=ExtResource("10_s4es8")] +position = Vector2(96, 206) + +[node name="TimerLabel" type="Label" parent="."] +offset_right = 40.0 +offset_bottom = 23.0 +text = "0000" + +[node name="Coins" type="Node2D" parent="."] + +[node name="Coin" parent="Coins" instance=ExtResource("11_63e4f")] +position = Vector2(-34, 284) + +[node name="Coin3" parent="Coins" instance=ExtResource("11_63e4f")] +position = Vector2(-245, 201) + +[node name="Coin4" parent="Coins" instance=ExtResource("11_63e4f")] +position = Vector2(-107, 321) + +[node name="Enemies" type="Node2D" parent="."] + +[node name="Slime" parent="Enemies" instance=ExtResource("12_y6lc1")] +position = Vector2(71, 213) + +[connection signal="triggerFiredSignal" from="Trigger" to="." method="_on_trigger_fired"] +[connection signal="triggerFiredSignal" from="Trigger2" to="." method="_on_trigger_fired"] diff --git a/scenes/level3.tscn b/scenes/level3.tscn new file mode 100644 index 0000000..d5c65d8 --- /dev/null +++ b/scenes/level3.tscn @@ -0,0 +1,386 @@ +[gd_scene load_steps=21 format=4 uid="uid://l46wf6kriyea"] + +[ext_resource type="Texture2D" uid="uid://cou2dhnt8x8d7" path="res://assets/graphics/env/sky.png" id="1_qewby"] +[ext_resource type="Texture2D" uid="uid://yns5hjgu5net" path="res://assets/graphics/env/background.png" id="2_bradm"] +[ext_resource type="Texture2D" uid="uid://ds2j76cg1r8y2" path="res://assets/graphics/objects/plane.png" id="3_got4s"] +[ext_resource type="Texture2D" uid="uid://cy2xlq65lg2b" path="res://assets/graphics/env/terrain/Terrain (32x32).png" id="4_e40mx"] +[ext_resource type="Texture2D" uid="uid://na61n1gqy7r5" path="res://assets/graphics/env/terrain/veg_32x32(1).png" id="5_a114e"] +[ext_resource type="Texture2D" uid="uid://dqgc7aef0pm78" path="res://assets/graphics/env/terrain/mushroom_32x64(1).png" id="6_y1e0c"] +[ext_resource type="Script" uid="uid://barmq4qhp5cvl" path="res://scripts/scene_manager.gd" id="7_s4dsi"] +[ext_resource type="PackedScene" uid="uid://qv8blu8wkqvq" path="res://scenes/crate.tscn" id="8_07lh1"] +[ext_resource type="PackedScene" uid="uid://dmrrbiwqptrho" path="res://scenes/trigger.tscn" id="9_6uuvf"] +[ext_resource type="PackedScene" uid="uid://b1yy0sybg66hh" path="res://scenes/player.tscn" id="10_x008a"] +[ext_resource type="PackedScene" uid="uid://dxocmoeuu32ex" path="res://scenes/coin.tscn" id="11_atr84"] +[ext_resource type="PackedScene" uid="uid://ccx1uakpj5143" path="res://scenes/slime.tscn" id="12_qyu38"] + +[sub_resource type="TileMapPattern" id="TileMapPattern_p57ef"] +tile_data = PackedInt32Array(0, 0, 4, 1, 65536, 4, 2, 65536, 4, 3, 65536, 4, 4, 131072, 4) + +[sub_resource type="TileMapPattern" id="TileMapPattern_u5sy4"] +tile_data = PackedInt32Array(0, 0, 4, 1, 65536, 4, 2, 65536, 4, 3, 65536, 4, 4, 131072, 4) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_gee14"] +texture = ExtResource("4_e40mx") +texture_region_size = Vector2i(32, 32) +0:0/0 = 0 +0:0/0/terrain_set = 0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:0/0/terrains_peering_bit/bottom_right_corner = 0 +0:0/0/terrains_peering_bit/bottom_side = 0 +1:0/0 = 0 +1:0/0/terrain_set = 0 +1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +1:0/0/terrains_peering_bit/bottom_right_corner = 0 +1:0/0/terrains_peering_bit/bottom_side = 0 +1:0/0/terrains_peering_bit/bottom_left_corner = 0 +2:0/0 = 0 +2:0/0/terrain_set = 0 +2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +2:0/0/terrains_peering_bit/bottom_side = 0 +2:0/0/terrains_peering_bit/bottom_left_corner = 0 +4:0/0 = 0 +4:0/0/terrain_set = 0 +4:0/0/terrain = 0 +4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +4:0/0/terrains_peering_bit/bottom_side = 0 +6:0/0 = 0 +6:0/0/terrain_set = 0 +6:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(3.8235703, 1.5931549, 16, 1.5931549, 16, 16, 4.1422005, 16) +6:0/0/terrains_peering_bit/bottom_left_corner = 0 +6:0/0/terrains_peering_bit/left_side = 0 +6:0/0/terrains_peering_bit/top_left_corner = 0 +6:0/0/terrains_peering_bit/top_side = 0 +6:0/0/terrains_peering_bit/top_right_corner = 0 +7:0/0 = 0 +7:0/0/terrain_set = 0 +7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -1.9117832, 16, -1.593153, 1.2745247, -16, 0.95589066) +7:0/0/terrains_peering_bit/right_side = 0 +7:0/0/terrains_peering_bit/bottom_right_corner = 0 +7:0/0/terrains_peering_bit/top_left_corner = 0 +7:0/0/terrains_peering_bit/top_side = 0 +7:0/0/terrains_peering_bit/top_right_corner = 0 +9:0/0 = 0 +9:0/0/terrain_set = 0 +9:0/0/terrain = 0 +9:0/0/terrains_peering_bit/bottom_right_corner = 0 +9:0/0/terrains_peering_bit/bottom_side = 0 +9:0/0/terrains_peering_bit/bottom_left_corner = 0 +9:0/0/terrains_peering_bit/top_side = 0 +10:0/0 = 0 +10:0/0/terrain_set = 0 +10:0/0/terrain = 0 +10:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(2.2304153, -16, 16, -16, 16, 16, 1.9117851, 16) +10:0/0/terrains_peering_bit/bottom_side = 0 +10:0/0/terrains_peering_bit/bottom_left_corner = 0 +10:0/0/terrains_peering_bit/left_side = 0 +10:0/0/terrains_peering_bit/top_left_corner = 0 +10:0/0/terrains_peering_bit/top_side = 0 +12:0/0 = 0 +12:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 0.95589066, -16, 0.95589066) +13:0/0 = 0 +13:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 0.95589066, -16, 0.95589066) +15:0/0 = 0 +15:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:1/0 = 0 +0:1/0/terrain_set = 0 +0:1/0/terrain = 0 +0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:1/0/terrains_peering_bit/right_side = 0 +0:1/0/terrains_peering_bit/bottom_right_corner = 0 +0:1/0/terrains_peering_bit/bottom_side = 0 +0:1/0/terrains_peering_bit/top_side = 0 +0:1/0/terrains_peering_bit/top_right_corner = 0 +1:1/0 = 0 +1:1/0/terrain_set = 0 +1:1/0/terrain = 0 +1:1/0/terrains_peering_bit/right_side = 0 +1:1/0/terrains_peering_bit/bottom_right_corner = 0 +1:1/0/terrains_peering_bit/bottom_side = 0 +1:1/0/terrains_peering_bit/bottom_left_corner = 0 +1:1/0/terrains_peering_bit/left_side = 0 +1:1/0/terrains_peering_bit/top_left_corner = 0 +1:1/0/terrains_peering_bit/top_side = 0 +1:1/0/terrains_peering_bit/top_right_corner = 0 +2:1/0 = 0 +2:1/0/terrain_set = 0 +2:1/0/terrain = 0 +2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +2:1/0/terrains_peering_bit/bottom_side = 0 +2:1/0/terrains_peering_bit/bottom_left_corner = 0 +2:1/0/terrains_peering_bit/left_side = 0 +2:1/0/terrains_peering_bit/top_left_corner = 0 +2:1/0/terrains_peering_bit/top_side = 0 +4:1/0 = 0 +4:1/0/terrain_set = 0 +4:1/0/terrain = 0 +4:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +4:1/0/terrains_peering_bit/bottom_side = 0 +4:1/0/terrains_peering_bit/top_side = 0 +6:1/0 = 0 +6:1/0/terrain_set = 0 +6:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(3.8235703, 1.5931549, 16, 1.5931549, 16, -16, 4.1422005, -16) +6:1/0/terrains_peering_bit/bottom_right_corner = 0 +6:1/0/terrains_peering_bit/bottom_side = 0 +6:1/0/terrains_peering_bit/bottom_left_corner = 0 +6:1/0/terrains_peering_bit/left_side = 0 +6:1/0/terrains_peering_bit/top_left_corner = 0 +7:1/0 = 0 +7:1/0/terrain_set = 0 +7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -1.593153, -16, -1.593153, 1.2745247, -16, 0.95589066) +7:1/0/terrains_peering_bit/right_side = 0 +7:1/0/terrains_peering_bit/bottom_right_corner = 0 +7:1/0/terrains_peering_bit/bottom_side = 0 +7:1/0/terrains_peering_bit/bottom_left_corner = 0 +7:1/0/terrains_peering_bit/top_right_corner = 0 +9:1/0 = 0 +9:1/0/terrain_set = 0 +9:1/0/terrain = 0 +9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -4.1421986, -16, -4.1421986, 16, -16, 16) +9:1/0/terrains_peering_bit/right_side = 0 +9:1/0/terrains_peering_bit/bottom_right_corner = 0 +9:1/0/terrains_peering_bit/bottom_side = 0 +9:1/0/terrains_peering_bit/top_side = 0 +9:1/0/terrains_peering_bit/top_right_corner = 0 +10:1/0 = 0 +10:1/0/terrain_set = 0 +10:1/0/terrain = 0 +10:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 1.2745247, 16, 1.2745247, 16, 16, -16, 16) +10:1/0/terrains_peering_bit/right_side = 0 +10:1/0/terrains_peering_bit/bottom_side = 0 +10:1/0/terrains_peering_bit/left_side = 0 +10:1/0/terrains_peering_bit/top_left_corner = 0 +10:1/0/terrains_peering_bit/top_side = 0 +10:1/0/terrains_peering_bit/top_right_corner = 0 +12:1/0 = 0 +12:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 1.2745247, 16, 1.2745247, 16, 16, -16, 16) +13:1/0 = 0 +13:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 1.2745247, 16, 1.2745247, 16, 16, -16, 16) +15:1/0 = 0 +16:1/0 = 0 +0:2/0 = 0 +0:2/0/terrain_set = 0 +0:2/0/terrain = 0 +0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:2/0/terrains_peering_bit/right_side = 0 +0:2/0/terrains_peering_bit/top_side = 0 +0:2/0/terrains_peering_bit/top_right_corner = 0 +1:2/0 = 0 +1:2/0/terrain_set = 0 +1:2/0/terrain = 0 +1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +1:2/0/terrains_peering_bit/right_side = 0 +1:2/0/terrains_peering_bit/left_side = 0 +1:2/0/terrains_peering_bit/top_left_corner = 0 +1:2/0/terrains_peering_bit/top_side = 0 +1:2/0/terrains_peering_bit/top_right_corner = 0 +2:2/0 = 0 +2:2/0/terrain_set = 0 +2:2/0/terrain = 0 +2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +2:2/0/terrains_peering_bit/left_side = 0 +2:2/0/terrains_peering_bit/top_left_corner = 0 +2:2/0/terrains_peering_bit/top_side = 0 +4:2/0 = 0 +4:2/0/terrain_set = 0 +4:2/0/terrain = 0 +4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +4:2/0/terrains_peering_bit/top_side = 0 +6:3/0 = 0 +6:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -6.0539837, -16, -5.7353516, 16, -16, 16) +7:3/0 = 0 +7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(4.779461, 16, 16, 16, 16, -16, 4.1422005, -16) +9:3/0 = 0 +9:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 0.95589066, -16, 0.95589066) +10:3/0 = 0 +10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 0.95589066, -16, 0.95589066) +12:3/0 = 0 +12:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +13:3/0 = 0 +13:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +15:3/0 = 0 +15:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +16:3/0 = 0 +16:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:4/0 = 0 +0:4/0/terrain_set = 0 +0:4/0/terrain = 0 +0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:4/0/terrains_peering_bit/right_side = 0 +1:4/0 = 0 +1:4/0/terrain_set = 0 +1:4/0/terrain = 0 +1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +1:4/0/terrains_peering_bit/right_side = 0 +1:4/0/terrains_peering_bit/left_side = 0 +2:4/0 = 0 +2:4/0/terrain_set = 0 +2:4/0/terrain = 0 +2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +2:4/0/terrains_peering_bit/left_side = 0 +4:4/0 = 0 +4:4/0/terrain_set = 0 +4:4/0/terrain = 0 +4:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +6:4/0 = 0 +6:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -6.0539837, -16, -5.7353516, 16, -16, 16) +7:4/0 = 0 +7:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(4.779461, 16, 16, 16, 16, -16, 4.1422005, -16) +9:4/0 = 0 +9:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 1.2745247, 16, 1.2745247, 16, 16, -16, 16) +10:4/0 = 0 +10:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 1.2745247, 16, 1.2745247, 16, 16, -16, 16) +12:4/0 = 0 +12:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +13:4/0 = 0 +13:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +15:4/0 = 0 +15:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +16:4/0 = 0 +16:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +4:3/0 = 0 +3:3/0 = 0 +3:2/0 = 0 +3:1/0 = 0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_dinhu"] +texture = ExtResource("5_a114e") +texture_region_size = Vector2i(32, 32) +0:0/0 = 0 +0:0/0/terrain_set = 0 +0:0/0/terrain = 1 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_kvuet"] +texture = ExtResource("6_y1e0c") +texture_region_size = Vector2i(32, 32) +0:0/0 = 0 +0:0/0/terrain_set = 0 +0:0/0/terrains_peering_bit/bottom_side = 1 +0:1/0 = 0 +0:1/0/terrain_set = 0 +0:1/0/terrain = 1 +0:1/0/terrains_peering_bit/top_side = 1 + +[sub_resource type="TileSet" id="TileSet_0tnpc"] +tile_size = Vector2i(32, 32) +physics_layer_0/collision_layer = 1 +terrain_set_0/mode = 0 +terrain_set_0/terrain_0/name = "LeafyDirt" +terrain_set_0/terrain_0/color = Color(0.5, 0.34375, 0.25, 1) +terrain_set_0/terrain_1/name = "Veg" +terrain_set_0/terrain_1/color = Color(0.5, 0.4375, 0.25, 1) +sources/0 = SubResource("TileSetAtlasSource_gee14") +sources/1 = SubResource("TileSetAtlasSource_dinhu") +sources/2 = SubResource("TileSetAtlasSource_kvuet") +pattern_0 = SubResource("TileMapPattern_p57ef") +pattern_1 = SubResource("TileMapPattern_u5sy4") + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_8cj0n"] + +[sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_8cj0n"] + +[node name="Game" type="Node2D"] +position = Vector2(6, 2) + +[node name="sky" type="Parallax2D" parent="."] +repeat_size = Vector2(320, 160) + +[node name="Sprite2D" type="Sprite2D" parent="sky"] +position = Vector2(154, 88) +texture = ExtResource("1_qewby") + +[node name="trees" type="Parallax2D" parent="."] +scroll_scale = Vector2(0.5, 1) +repeat_size = Vector2(300, 0) + +[node name="Sprite2D" type="Sprite2D" parent="trees"] +position = Vector2(154, 504) +texture = ExtResource("2_bradm") + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture_filter = 1 +position = Vector2(215, 66) +scale = Vector2(3.5, 3.5625) +texture = ExtResource("3_got4s") + +[node name="TileMapLayer" type="TileMapLayer" parent="."] +texture_filter = 1 +tile_map_data = PackedByteArray("AAADAAcAAAAEAAQAAAAEAAcAAAAEAAQAAAACAAcAAAAEAAQAAAABAAwAAAABAAQAAAACAAwAAAABAAQAAAADAAwAAAABAAQAAAAEAAwAAAABAAQAAAD9/wwAAAABAAQAAAD+/wwAAAABAAQAAAD//wwAAAACAAQAAAD//w0AAAACAAQAAAD+/w0AAAAAAAQAAAD0/wwAAAACAAQAAAD1/wsAAAAAAAIAAAD2/wsAAAABAAIAAAD3/wwAAAAAAAIAAAD3/wsAAAAKAAEAAAD4/wwAAAAKAAEAAAD4/wsAAAABAAEAAAD5/wwAAAABAAEAAAD5/wsAAAABAAEAAAD5/woAAAABAAEAAAD5/wkAAAABAAEAAAD4/wkAAAABAAEAAAD4/wgAAAABAAAAAAD5/wgAAAABAAAAAAD3/wkAAAABAAEAAAD3/wgAAAACAAEAAAD2/wkAAAAKAAEAAAD2/wgAAAABAAEAAAD1/wkAAAAKAAEAAAD1/wgAAAAJAAEAAAD1/woAAAAKAAEAAAD0/woAAAAAAAIAAAD0/wkAAAAKAAEAAAD2/woAAAABAAEAAAD4/woAAAABAAEAAAD2/wcAAAABAAAAAAD3/wcAAAACAAAAAAD1/wcAAAAAAAAAAAD0/wgAAAAGAAEAAAD3/woAAAABAAEAAAD1/w4AAAABAAEAAAD2/w4AAAACAAEAAAD5/w4AAAAAAAIAAAD4/w8AAAACAAQAAAD3/w8AAAAKAAAAAAD2/w8AAAABAAEAAAD1/w8AAAAJAAEAAAD6/w8AAAAAAAIAAAD6/w4AAAAKAAEAAAD3/xAAAAABAAEAAAD2/xAAAAABAAEAAAD2/xEAAAAAAAIAAAD3/xEAAAABAAIAAAD4/xEAAAABAAIAAAD5/xEAAAACAAIAAAD6/xEAAAAEAAAAAAD5/w0AAAAKAAEAAAD6/w0AAAAKAAAAAAD5/xAAAAAEAAAAAAD4/xAAAAACAAEAAAD4/w0AAAAAAAIAAAD7/w4AAAABAAEAAAD7/w8AAAABAAIAAAD7/w0AAAAHAAEAAAD8/w8AAAACAAIAAAD1/w0AAAAKAAAAAAD0/w4AAAABAAIAAAD0/w0AAAABAAEAAADz/w0AAAAAAAEAAADz/w4AAAAAAAIAAADz/wwAAAACAAAAAAD6/wsAAAAKAAAAAAD6/wwAAAAKAAAAAAD6/wkAAAACAAEAAAD6/woAAAACAAEAAAD6/wgAAAACAAAAAAD7/wwAAAABAAQAAAD8/wwAAAAKAAEAAAD8/w0AAAAKAAAAAAD8/w4AAAAKAAAAAADz/wkAAAAAAAIAAADy/wgAAAAAAAIAAADx/wcAAAAAAAIAAADy/wcAAAAKAAEAAADx/wYAAAAAAAAAAADy/wYAAAACAAAAAADz/wgAAAAKAAEAAADz/wcAAAAGAAEAAAD8/xIAAAACAAQAAAD7/xIAAAACAAIAAAD6/xIAAAABAAIAAAD5/xIAAAAAAAQAAAD7/xEAAAACAAAAAAD0/xAAAAAAAAQAAAD1/xAAAAAAAAIAAADz/w8AAAAEAAIAAADy/w8AAAAAAAQAAADx/w4AAAACAAQAAADw/w4AAAAAAAQAAADv/w0AAAAEAAIAAADv/wwAAAAEAAAAAADu/wwAAAAAAAQAAAD//woAAAAAAAQAAAAAAAoAAAABAAQAAAABAAoAAAABAAQAAAACAAoAAAABAAQAAAADAAoAAAACAAQAAAD8/xEAAgAAAAEAAAD8/xAAAgAAAAAAAADw/w0AAgAAAAEAAADw/wwAAgAAAAAAAAD+/wsAAQAAAAAAAAADAAsAAQAAAAAAAAD8/wsAAgAAAAEAAAD8/woAAgAAAAAAAAD5/wcAAQAAAAAAAAD1/wYAAQAAAAAAAAD2/wYAAgAAAAEAAAD2/wUAAgAAAAAAAAAFABEAAAAEAAEAAAAFABAAAAAEAAAAAAAGABAAAAACAAQAAAAGAA8AAAAEAAEAAAAGAA4AAAAEAAAAAAAHAA4AAAABAAQAAAAIAA4AAAACAAEAAAAIAA8AAAAEAAIAAAAIAA0AAAAEAAAAAAAJAA0AAAACAAQAAAAJAAwAAAAEAAEAAAAJAAsAAAAEAAAAAAAKAAsAAAABAAQAAAALAAsAAAACAAQAAAALAAoAAAAAAAQAAAAMAAoAAAABAAQAAAANAAoAAAACAAQAAAAFABIAAAAEAAIAAAAEABIAAAABAAQAAAADABIAAAAAAAQAAAA=") +tile_set = SubResource("TileSet_0tnpc") + +[node name="SceneManager" type="Node2D" parent="."] +unique_name_in_owner = true +script = ExtResource("7_s4dsi") + +[node name="StaticBody2D" type="StaticBody2D" parent="."] +position = Vector2(120, 233) +scale = Vector2(3.2000012, 1) +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] +shape = SubResource("RectangleShape2D_8cj0n") + +[node name="StaticBody2D2" type="StaticBody2D" parent="."] +position = Vector2(229.00002, 261) +rotation = -0.43738624 +scale = Vector2(3.2000012, 1) +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D2"] +shape = SubResource("RectangleShape2D_8cj0n") + +[node name="StaticBody2D3" type="StaticBody2D" parent="."] +position = Vector2(321.00003, 198.00003) +rotation = 0.59605384 +scale = Vector2(3.2000012, 1) +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D3"] +shape = SubResource("RectangleShape2D_8cj0n") + +[node name="Crate" parent="." groups=["explodable", "pushable"] instance=ExtResource("8_07lh1")] +position = Vector2(114, 175) + +[node name="Crate2" parent="." groups=["explodable", "pushable"] instance=ExtResource("8_07lh1")] +position = Vector2(155.00002, 199) +rotation = 0.8783198 + +[node name="Boundary" type="StaticBody2D" parent="."] +position = Vector2(142, 591) +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Boundary"] +shape = SubResource("WorldBoundaryShape2D_8cj0n") + +[node name="Trigger" parent="." instance=ExtResource("9_6uuvf")] +position = Vector2(201, 376) + +[node name="Trigger2" parent="." instance=ExtResource("9_6uuvf")] +position = Vector2(62.000015, 278) +intent = "powerup" + +[node name="CharacterBody2D" parent="." instance=ExtResource("10_x008a")] +position = Vector2(96, 206) + +[node name="TimerLabel" type="Label" parent="."] +offset_right = 40.0 +offset_bottom = 23.0 +text = "0000" + +[node name="Coins" type="Node2D" parent="."] + +[node name="Coin" parent="Coins" instance=ExtResource("11_atr84")] +position = Vector2(-34, 284) + +[node name="Coin3" parent="Coins" instance=ExtResource("11_atr84")] +position = Vector2(-245, 201) + +[node name="Coin4" parent="Coins" instance=ExtResource("11_atr84")] +position = Vector2(-107, 321) + +[node name="Enemies" type="Node2D" parent="."] + +[node name="Slime" parent="Enemies" instance=ExtResource("12_qyu38")] +position = Vector2(71, 213) + +[connection signal="triggerFiredSignal" from="Trigger" to="." method="_on_trigger_fired"] +[connection signal="triggerFiredSignal" from="Trigger2" to="." method="_on_trigger_fired"] diff --git a/scenes/player.tscn b/scenes/player.tscn index e55f252..8319362 100644 --- a/scenes/player.tscn +++ b/scenes/player.tscn @@ -255,10 +255,10 @@ scale = Vector2(2.28, 1) target_position = Vector2(-14, 0) [node name="RightSpawn" type="Marker2D" parent="."] -position = Vector2(15, -10) +position = Vector2(15, 0) [node name="LeftSpawn" type="Marker2D" parent="."] -position = Vector2(-14, -10) +position = Vector2(-14, 0) [node name="Timer" type="Timer" parent="."] wait_time = 0.5 diff --git a/scenes/slime.tscn b/scenes/slime.tscn index 7df0f6e..ee2221d 100644 --- a/scenes/slime.tscn +++ b/scenes/slime.tscn @@ -56,4 +56,18 @@ frame_progress = 0.07521304 position = Vector2(0, 5) shape = SubResource("RectangleShape2D_gstla") +[node name="RightCast" type="RayCast2D" parent="."] +target_position = Vector2(17, 0) + +[node name="LeftCast" type="RayCast2D" parent="."] +target_position = Vector2(-17, 0) + +[node name="RightDownCast" type="RayCast2D" parent="."] +position = Vector2(7, 0) +target_position = Vector2(0, 17) + +[node name="LeftDownCast" type="RayCast2D" parent="."] +position = Vector2(-7, 0) +target_position = Vector2(0, 17) + [connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/scripts/bullet.gd b/scripts/bullet.gd index f59eb80..cbfe176 100644 --- a/scripts/bullet.gd +++ b/scripts/bullet.gd @@ -3,6 +3,8 @@ class_name Bullet extends Area2D var speed:float = 700 @onready var bullet_graphic: Sprite2D = $BulletGraphic +signal bulletDamageSignal(area, bullet) + # Called when the node enters the scene tree for the first time. func _ready() -> void: pass # Replace with function body. @@ -16,3 +18,7 @@ func setSpeed(value)->void: speed = value if speed<0: bullet_graphic.flip_h = true + + +func _on_area_entered(area: Area2D) -> void: + bulletDamageSignal.emit(area, self) diff --git a/scripts/coin.gd b/scripts/coin.gd index e09a61b..e6055c1 100644 --- a/scripts/coin.gd +++ b/scripts/coin.gd @@ -16,3 +16,6 @@ func _on_body_entered(body: Node2D) -> void: print("body entered in coin") if body is Player: coinCollectedSignal.emit(body, self) + if body is Grenade: + body.queue_free() + self.queue_free() diff --git a/scripts/gamecontroller.gd b/scripts/gamecontroller.gd index 7aaf25d..d4c02b9 100644 --- a/scripts/gamecontroller.gd +++ b/scripts/gamecontroller.gd @@ -3,53 +3,125 @@ extends Node2D var totalCrates = 2 #This will be updated in the future, see SceneManager var cratesDestroyed = 0 var timeLimit = 10 -var timer:= Timer.new() +#var timer:= Timer.new() +#var timerLabel = var coinsCollectedTotal:int = 0 var totalCoinsAvailable:int = 0 +var levels = ["res://scenes/game.tscn", "res://scenes/level2.tscn", "res://scenes/level3.tscn"] +var timers = [6, 10, 15] +var timeAvailable:int = 0 +var currentLevel = 0 +var timer:= Timer.new() + +# signals +signal levelChangeSignal(level) +signal destroySignal(body) +signal playerDamagedSignal(health, maxHealth) +signal playerDeathSignal + +var enemy:CharacterStats +var player:CharacterStats +var enemiesDict = {} +var playerCurrentHealth:int = 0 + # Called when the node enters the scene tree for the first time. func _ready(): + # load in characters + enemy = load("res://scripts/rscs/slime_stats.tres") + player = load("res://scripts/rscs/player_stats.tres") + playerCurrentHealth = player.starting_health + add_child(timer) timer.wait_time = 1 timer.one_shot = false timer.connect("timeout", secondCounter) timer.start() - $TimerLabel.text = str(timeLimit) + #$TimerLabel.text = str(timeLimit) -func secondCounter(): - timeLimit -= 1 - $TimerLabel.text = str(timeLimit) - if timeLimit <=0: +func secondCounter() -> void: + #timeLimit -= 1 + #$TimerLabel.text = str(timeLimit) + #if timeLimit <=0: + # print("You lose baby!") + # get_tree().reload_current_scene() + + #class + timeAvailable -= 1 + if timeAvailable <= 0: print("You lose baby!") - get_tree().reload_current_scene() + levelChangeSignal.emit(levels[currentLevel]) + +func reset() -> void: + timeAvailable = timers[currentLevel] + enemiesDict.clear() + playerCurrentHealth = player.starting_health func _on_trigger_fired(intent: Variant, body) -> void: #print("GC knows trigger fired " +intent) match intent: "destroy": - if body.name.begins_with("Crate"): - cratesDestroyed +=1 - body.queue_free() # destroy the crate - again will move to SceneManager - if cratesDestroyed>=totalCrates: - print("You win baby!") - get_tree().reload_current_scene() + #if body.name.begins_with("Crate"): + # cratesDestroyed +=1 + # body.queue_free() # destroy the crate - again will move to SceneManager + #if cratesDestroyed>=totalCrates: + # print("You win baby!") + # get_tree().reload_current_scene() + destroySignal.emit(body) "powerup": print("power up this thing") func _on_coin_collected(body, coin): print("GC knows coin collected") coinsCollectedTotal += 1 - coin.queue_free() - if coinsCollectedTotal >= totalCoinsAvailable: - print("You won the level!") + destroySignal.emit(coin) func totalCoins(value): - totalCoinsAvailable = value + if value == 0: + # you won + print("you won") + currentLevel += 1 + if currentLevel >= levels.size(): + currentLevel = 0 + levelChangeSignal.emit(levels[currentLevel]) func _on_slime_damage(body, slime): print("GC knows slime damage") + print("Damage " + str(enemiesDict[slime]["damage"])) + playerCurrentHealth -= enemiesDict[slime]["damage"] + if playerCurrentHealth <= 0: + print("YOU DIED") + playerDeathSignal.emit() + else: + print("Player Health " + str(playerCurrentHealth) + " of " + str(player.starting_health)) + playerDamagedSignal.emit(playerCurrentHealth, player.starting_health) func totalEnemies(value): print("GC knows total enemies " + str(value)) #totalEnemies = value + +func addEnemyToLevel(slime) -> void: + print("GC adding enemy") + var randDamage:int = randi() % 10 + var enemyStat = { + "health": enemy.health, + "damage": enemy.meleeDamage + randDamage + } + enemiesDict[slime] = enemyStat + +func bulletDamage(area, bullet) -> void: + print("Bullet hitting area") + if area is Slime: + print("Hitting a slime") + enemiesDict[area]["health"] -= player.rangeDamage + if enemiesDict[area]["health"] <= 0: + print("enemy killed") + removeEnemyFromLevel(area) + destroySignal.emit(area) + else: + print("Slime health " + str(enemiesDict[area]["health"])) + +func removeEnemyFromLevel(slime) -> void: + enemiesDict.erase(slime) + diff --git a/scripts/rscs/character_stats.gd b/scripts/rscs/character_stats.gd new file mode 100644 index 0000000..61ab385 --- /dev/null +++ b/scripts/rscs/character_stats.gd @@ -0,0 +1,11 @@ +class_name CharacterStats extends Resource + +@export_category("Health") +@export var health:int = 100 +@export var max_health:int = 100 +@export var starting_health:int = 100 + +# dealing damage +@export_category("Damage") +@export var meleeDamage:int = 10 +@export var rangeDamage:int = 0 diff --git a/scripts/rscs/character_stats.gd.uid b/scripts/rscs/character_stats.gd.uid new file mode 100644 index 0000000..b5c00fa --- /dev/null +++ b/scripts/rscs/character_stats.gd.uid @@ -0,0 +1 @@ +uid://cvat5tqlqhakd diff --git a/scripts/rscs/player_stats.tres b/scripts/rscs/player_stats.tres new file mode 100644 index 0000000..a0ab3cc --- /dev/null +++ b/scripts/rscs/player_stats.tres @@ -0,0 +1,8 @@ +[gd_resource type="Resource" script_class="CharacterStats" load_steps=2 format=3 uid="uid://deoygngkmis5q"] + +[ext_resource type="Script" uid="uid://cvat5tqlqhakd" path="res://scripts/rscs/character_stats.gd" id="1_828p3"] + +[resource] +script = ExtResource("1_828p3") +rangeDamage = 10 +metadata/_custom_type_script = "uid://cvat5tqlqhakd" diff --git a/scripts/rscs/slime_stats.tres b/scripts/rscs/slime_stats.tres new file mode 100644 index 0000000..3378934 --- /dev/null +++ b/scripts/rscs/slime_stats.tres @@ -0,0 +1,10 @@ +[gd_resource type="Resource" script_class="CharacterStats" load_steps=2 format=3 uid="uid://tgmiodedtib6"] + +[ext_resource type="Script" uid="uid://cvat5tqlqhakd" path="res://scripts/rscs/character_stats.gd" id="1_i64ta"] + +[resource] +script = ExtResource("1_i64ta") +health = 10 +max_health = 10 +starting_health = 10 +metadata/_custom_type_script = "uid://cvat5tqlqhakd" diff --git a/scripts/scene_manager.gd b/scripts/scene_manager.gd index ead0666..c62f02d 100644 --- a/scripts/scene_manager.gd +++ b/scripts/scene_manager.gd @@ -5,8 +5,6 @@ var bullet = preload("res://scenes/bullet.tscn") @onready var coins: Node2D = $"../Coins" @onready var enemies: Node2D = $"../Enemies" -@onready var game: Node2D = $".." - var bulletArray = [] var totalAllowedBullets = 7 @@ -14,28 +12,44 @@ var grenade = preload("res://scenes/grenade.tscn") # Called when the node enters the scene tree for the first time. func _ready() -> void: + Gamecontroller.reset() buildLevel() func buildLevel() -> void: # hook up coins - var totalCoins = 0 if coins: - for obj in coins.get_children(): - if obj is Coin: - totalCoins += 1 - # hook up a listener at the game controller - obj.coinCollectedSignal.connect(game._on_coin_collected) - # tell GC how many coins total - game.totalCoins(totalCoins) + updateCoins() - var totalEnemies = 0 if enemies: - for obj in enemies.get_children(): - if obj is Slime: - totalEnemies += 1 - # hook up a listener at the game controller - obj.slimeDamageSignal.connect(game._on_slime_damage) - game.totalEnemies(totalEnemies) + updateEnemies() + + # wire up signals from GameController + Gamecontroller.levelChangeSignal.connect(changeScene) + Gamecontroller.destroySignal.connect(destroy) + +func updateEnemies() -> void: + var totalEnemies = 0 + for obj in enemies.get_children(): + if obj is Slime: + totalEnemies += 1 + # hook up a listener at the game controller + if not obj.slimeDamageSignal.is_connected(Gamecontroller._on_slime_damage): + obj.slimeDamageSignal.connect(Gamecontroller._on_slime_damage) + Gamecontroller.addEnemyToLevel(obj) + Gamecontroller.totalEnemies(totalEnemies) + +func updateCoins() -> void: + var totalCoins = 0 + for obj in coins.get_children(): + if obj is Coin: + totalCoins += 1 + # hook up a listener at the game controller + if not obj.coinCollectedSignal.is_connected(Gamecontroller._on_coin_collected): + obj.coinCollectedSignal.connect(Gamecontroller._on_coin_collected) + if not obj.tree_exited.is_connected(updateCoins): + obj.tree_exited.connect(updateCoins) + # tell GC how many coins total + Gamecontroller.totalCoins(totalCoins) # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: @@ -46,7 +60,8 @@ func bulletFactory()->Bullet: if bulletArray.size() < totalAllowedBullets: # make a new bullet myBullet = bullet.instantiate() - game.add_child(myBullet) + myBullet.bulletDamageSignal.connect(Gamecontroller.bulletDamage) + owner.add_child(myBullet) else: myBullet = bulletArray.pop_back() @@ -62,7 +77,12 @@ func makeBullet(_bulletPosition, _bulletSpeed)->void: func makeGrenade(_grenadePosition, _grenadeDirection)->void: print("SM make a grenade") var myGrenade:Grenade = grenade.instantiate() - game.add_child(myGrenade) + owner.add_child(myGrenade) myGrenade.apply_central_impulse(Vector2(_grenadeDirection, -1)*200) myGrenade.transform = _grenadePosition - + +func changeScene(level) -> void: + get_tree().call_deferred("change_scene_to_file", level) + +func destroy(body) -> void: + body.queue_free() diff --git a/scripts/slime.gd b/scripts/slime.gd index 9abfda2..d9716e9 100644 --- a/scripts/slime.gd +++ b/scripts/slime.gd @@ -1,5 +1,13 @@ class_name Slime extends Area2D +@onready var right_cast: RayCast2D = $RightCast +@onready var left_cast: RayCast2D = $LeftCast +@onready var right_down_cast: RayCast2D = $RightDownCast +@onready var left_down_cast: RayCast2D = $LeftDownCast + +var speed:int = 100 +var direction = 1 + signal slimeDamageSignal(body, slime) # Called when the node enters the scene tree for the first time. @@ -9,7 +17,7 @@ func _ready() -> void: # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: - pass + position.x += direction * speed * delta func _on_body_entered(body: Node2D) -> void: