multi levels, closed loop for coins, custom resources for character stats, enemy attacks, player attacks, started enemy movement
This commit is contained in:
parent
8d07c7630f
commit
b40f2baaa7
@ -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
|
||||||
|
|||||||
@ -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"]
|
||||||
|
|||||||
@ -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")]
|
||||||
|
|||||||
@ -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
386
scenes/level2.tscn
Normal 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
386
scenes/level3.tscn
Normal 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"]
|
||||||
@ -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
|
||||||
|
|||||||
@ -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"]
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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()
|
||||||
|
|||||||
@ -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)
|
||||||
|
|
||||||
|
|||||||
11
scripts/rscs/character_stats.gd
Normal file
11
scripts/rscs/character_stats.gd
Normal 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
|
||||||
1
scripts/rscs/character_stats.gd.uid
Normal file
1
scripts/rscs/character_stats.gd.uid
Normal file
@ -0,0 +1 @@
|
|||||||
|
uid://cvat5tqlqhakd
|
||||||
8
scripts/rscs/player_stats.tres
Normal file
8
scripts/rscs/player_stats.tres
Normal 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"
|
||||||
10
scripts/rscs/slime_stats.tres
Normal file
10
scripts/rscs/slime_stats.tres
Normal 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"
|
||||||
@ -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()
|
||||||
|
|||||||
@ -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:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user