multi levels, closed loop for coins, custom resources for character stats, enemy attacks, player attacks, started enemy movement

This commit is contained in:
RudyIm 2025-11-03 20:56:14 -05:00
parent 8d07c7630f
commit b40f2baaa7
17 changed files with 981 additions and 52 deletions

View File

@ -15,6 +15,10 @@ run/main_scene="uid://cy1i6ucex6m0d"
config/features=PackedStringArray("4.5", "Forward Plus") config/features=PackedStringArray("4.5", "Forward Plus")
config/icon="res://icon.svg" config/icon="res://icon.svg"
[autoload]
Gamecontroller="*res://scripts/gamecontroller.gd"
[display] [display]
window/size/viewport_width=320 window/size/viewport_width=320

View File

@ -4,13 +4,14 @@
[ext_resource type="Texture2D" uid="uid://bc8cpuacrbf0y" path="res://assets/graphics/projectiles/pixel_bullet.png" id="2_y25gk"] [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"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_h1aey"]
size = Vector2(4, 2) size = Vector2(4, 6.3999996)
[node name="Bullet" type="Area2D"] [node name="Bullet" type="Area2D"]
scale = Vector2(34.677, 20) scale = Vector2(34.677, 20)
script = ExtResource("1_mkf8s") script = ExtResource("1_mkf8s")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
scale = Vector2(0.99999994, 0.99999994)
shape = SubResource("RectangleShape2D_h1aey") shape = SubResource("RectangleShape2D_h1aey")
debug_color = Color(0.78294253, 0.1467745, 0.21462014, 0.41960785) debug_color = Color(0.78294253, 0.1467745, 0.21462014, 0.41960785)
@ -19,3 +20,5 @@ texture_filter = 1
position = Vector2(-1.8553616, -1.0851669) position = Vector2(-1.8553616, -1.0851669)
scale = Vector2(-0.048501078, -0.040855687) scale = Vector2(-0.048501078, -0.040855687)
texture = ExtResource("2_y25gk") texture = ExtResource("2_y25gk")
[connection signal="area_entered" from="." to="." method="_on_area_entered"]

View File

@ -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="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="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"] [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"] [node name="Game" type="Node2D"]
position = Vector2(6, 2) position = Vector2(6, 2)
script = ExtResource("1_lbhrr")
[node name="sky" type="Parallax2D" parent="."] [node name="sky" type="Parallax2D" parent="."]
repeat_size = Vector2(320, 160) repeat_size = Vector2(320, 160)
@ -300,7 +298,7 @@ texture = ExtResource("3_kvpfn")
[node name="Sprite2D" type="Sprite2D" parent="."] [node name="Sprite2D" type="Sprite2D" parent="."]
texture_filter = 1 texture_filter = 1
position = Vector2(-434.00003, 542) position = Vector2(-174.00003, 101)
scale = Vector2(3.5, 3.5625) scale = Vector2(3.5, 3.5625)
texture = ExtResource("5_kvpfn") texture = ExtResource("5_kvpfn")
@ -373,12 +371,6 @@ text = "0000"
[node name="Coin" parent="Coins" instance=ExtResource("12_dinhu")] [node name="Coin" parent="Coins" instance=ExtResource("12_dinhu")]
position = Vector2(-34, 284) 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="Enemies" type="Node2D" parent="."]
[node name="Slime" parent="Enemies" instance=ExtResource("13_kvuet")] [node name="Slime" parent="Enemies" instance=ExtResource("13_kvuet")]

View File

@ -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="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"] [sub_resource type="CircleShape2D" id="CircleShape2D_1xt3t"]
@ -13,4 +14,8 @@ script = ExtResource("1_cvyik")
shape = SubResource("CircleShape2D_1xt3t") shape = SubResource("CircleShape2D_1xt3t")
debug_color = Color(0.7058824, 0.49411765, 0.18431373, 0.5921569) 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"] [connection signal="body_entered" from="." to="." method="_on_body_entered"]

386
scenes/level2.tscn Normal file
View File

@ -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"]

386
scenes/level3.tscn Normal file
View File

@ -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"]

View File

@ -255,10 +255,10 @@ scale = Vector2(2.28, 1)
target_position = Vector2(-14, 0) target_position = Vector2(-14, 0)
[node name="RightSpawn" type="Marker2D" parent="."] [node name="RightSpawn" type="Marker2D" parent="."]
position = Vector2(15, -10) position = Vector2(15, 0)
[node name="LeftSpawn" type="Marker2D" parent="."] [node name="LeftSpawn" type="Marker2D" parent="."]
position = Vector2(-14, -10) position = Vector2(-14, 0)
[node name="Timer" type="Timer" parent="."] [node name="Timer" type="Timer" parent="."]
wait_time = 0.5 wait_time = 0.5

View File

@ -56,4 +56,18 @@ frame_progress = 0.07521304
position = Vector2(0, 5) position = Vector2(0, 5)
shape = SubResource("RectangleShape2D_gstla") 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"] [connection signal="body_entered" from="." to="." method="_on_body_entered"]

View File

@ -3,6 +3,8 @@ class_name Bullet extends Area2D
var speed:float = 700 var speed:float = 700
@onready var bullet_graphic: Sprite2D = $BulletGraphic @onready var bullet_graphic: Sprite2D = $BulletGraphic
signal bulletDamageSignal(area, bullet)
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready() -> void: func _ready() -> void:
pass # Replace with function body. pass # Replace with function body.
@ -16,3 +18,7 @@ func setSpeed(value)->void:
speed = value speed = value
if speed<0: if speed<0:
bullet_graphic.flip_h = true bullet_graphic.flip_h = true
func _on_area_entered(area: Area2D) -> void:
bulletDamageSignal.emit(area, self)

View File

@ -16,3 +16,6 @@ func _on_body_entered(body: Node2D) -> void:
print("body entered in coin") print("body entered in coin")
if body is Player: if body is Player:
coinCollectedSignal.emit(body, self) coinCollectedSignal.emit(body, self)
if body is Grenade:
body.queue_free()
self.queue_free()

View File

@ -3,53 +3,125 @@ extends Node2D
var totalCrates = 2 #This will be updated in the future, see SceneManager var totalCrates = 2 #This will be updated in the future, see SceneManager
var cratesDestroyed = 0 var cratesDestroyed = 0
var timeLimit = 10 var timeLimit = 10
var timer:= Timer.new() #var timer:= Timer.new()
#var timerLabel =
var coinsCollectedTotal:int = 0 var coinsCollectedTotal:int = 0
var totalCoinsAvailable: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. # Called when the node enters the scene tree for the first time.
func _ready(): 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) add_child(timer)
timer.wait_time = 1 timer.wait_time = 1
timer.one_shot = false timer.one_shot = false
timer.connect("timeout", secondCounter) timer.connect("timeout", secondCounter)
timer.start() timer.start()
$TimerLabel.text = str(timeLimit) #$TimerLabel.text = str(timeLimit)
func secondCounter(): func secondCounter() -> void:
timeLimit -= 1 #timeLimit -= 1
$TimerLabel.text = str(timeLimit) #$TimerLabel.text = str(timeLimit)
if timeLimit <=0: #if timeLimit <=0:
# print("You lose baby!")
# get_tree().reload_current_scene()
#class
timeAvailable -= 1
if timeAvailable <= 0:
print("You lose baby!") 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: func _on_trigger_fired(intent: Variant, body) -> void:
#print("GC knows trigger fired " +intent) #print("GC knows trigger fired " +intent)
match intent: match intent:
"destroy": "destroy":
if body.name.begins_with("Crate"): #if body.name.begins_with("Crate"):
cratesDestroyed +=1 # cratesDestroyed +=1
body.queue_free() # destroy the crate - again will move to SceneManager # body.queue_free() # destroy the crate - again will move to SceneManager
if cratesDestroyed>=totalCrates: #if cratesDestroyed>=totalCrates:
print("You win baby!") # print("You win baby!")
get_tree().reload_current_scene() # get_tree().reload_current_scene()
destroySignal.emit(body)
"powerup": "powerup":
print("power up this thing") print("power up this thing")
func _on_coin_collected(body, coin): func _on_coin_collected(body, coin):
print("GC knows coin collected") print("GC knows coin collected")
coinsCollectedTotal += 1 coinsCollectedTotal += 1
coin.queue_free() destroySignal.emit(coin)
if coinsCollectedTotal >= totalCoinsAvailable:
print("You won the level!")
func totalCoins(value): 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): func _on_slime_damage(body, slime):
print("GC knows slime damage") 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): func totalEnemies(value):
print("GC knows total enemies " + str(value)) print("GC knows total enemies " + str(value))
#totalEnemies = 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)

View File

@ -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

View File

@ -0,0 +1 @@
uid://cvat5tqlqhakd

View File

@ -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"

View File

@ -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"

View File

@ -5,8 +5,6 @@ var bullet = preload("res://scenes/bullet.tscn")
@onready var coins: Node2D = $"../Coins" @onready var coins: Node2D = $"../Coins"
@onready var enemies: Node2D = $"../Enemies" @onready var enemies: Node2D = $"../Enemies"
@onready var game: Node2D = $".."
var bulletArray = [] var bulletArray = []
var totalAllowedBullets = 7 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. # Called when the node enters the scene tree for the first time.
func _ready() -> void: func _ready() -> void:
Gamecontroller.reset()
buildLevel() buildLevel()
func buildLevel() -> void: func buildLevel() -> void:
# hook up coins # hook up coins
var totalCoins = 0
if coins: if coins:
for obj in coins.get_children(): updateCoins()
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)
var totalEnemies = 0
if enemies: if enemies:
for obj in enemies.get_children(): updateEnemies()
if obj is Slime:
totalEnemies += 1 # wire up signals from GameController
# hook up a listener at the game controller Gamecontroller.levelChangeSignal.connect(changeScene)
obj.slimeDamageSignal.connect(game._on_slime_damage) Gamecontroller.destroySignal.connect(destroy)
game.totalEnemies(totalEnemies)
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. # Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void: func _process(delta: float) -> void:
@ -46,7 +60,8 @@ func bulletFactory()->Bullet:
if bulletArray.size() < totalAllowedBullets: if bulletArray.size() < totalAllowedBullets:
# make a new bullet # make a new bullet
myBullet = bullet.instantiate() myBullet = bullet.instantiate()
game.add_child(myBullet) myBullet.bulletDamageSignal.connect(Gamecontroller.bulletDamage)
owner.add_child(myBullet)
else: else:
myBullet = bulletArray.pop_back() myBullet = bulletArray.pop_back()
@ -62,7 +77,12 @@ func makeBullet(_bulletPosition, _bulletSpeed)->void:
func makeGrenade(_grenadePosition, _grenadeDirection)->void: func makeGrenade(_grenadePosition, _grenadeDirection)->void:
print("SM make a grenade") print("SM make a grenade")
var myGrenade:Grenade = grenade.instantiate() var myGrenade:Grenade = grenade.instantiate()
game.add_child(myGrenade) owner.add_child(myGrenade)
myGrenade.apply_central_impulse(Vector2(_grenadeDirection, -1)*200) myGrenade.apply_central_impulse(Vector2(_grenadeDirection, -1)*200)
myGrenade.transform = _grenadePosition myGrenade.transform = _grenadePosition
func changeScene(level) -> void:
get_tree().call_deferred("change_scene_to_file", level)
func destroy(body) -> void:
body.queue_free()

View File

@ -1,5 +1,13 @@
class_name Slime extends Area2D 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) signal slimeDamageSignal(body, slime)
# Called when the node enters the scene tree for the first time. # 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. # Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void: func _process(delta: float) -> void:
pass position.x += direction * speed * delta
func _on_body_entered(body: Node2D) -> void: func _on_body_entered(body: Node2D) -> void: